前回はandroidのwebViewを利用してHTMLをロードする方法を学びました。
今回はiphoneのUIWebViewを使った画面表示のソースを以下に示します。
sample1. UIWebView source code objective-C interface(ios4)
#import <Foundation/Foundation.h>
// WEBHTML アプリについて
static NSInteger const ABOUT_APP = 1;
// WEBHTML アプリについて タイトル
static NSString *const ABOUT_APP_ITEM_NAME = @"アプリについて";
@interface WebViewController : UIViewController<UIWebViewDelegate> {
@private
NSInteger webDisp_;
UIWebView *webView_;
NSString *pathForResource_;
}
@property(nonatomic, assign)NSInteger webDisp;
@property(nonatomic, retain)UIWebView *webView;
@property(nonatomic, retain)NSString *pathForResource;
- (void)cancel;
@end
sample2. UIWebView source code objective-C implementation(ios4)
#import WebViewController.h"
@implementation WebViewController
@synthesize webDisp = webDisp_;
@synthesize webView = webView_;
@synthesize pathForResource = pathForResource_;
- (void)cancel {
NSLog(@"%s", __func__);
[self dismissModalViewControllerAnimated:YES];
}
- (void)viewDidLoad {
NSLog(@"%s", __func__);
if (ABOUT_APP == webDisp_) {
self.title = ABOUT_APP_ITEM_NAME;
self.pathForResource = @"about_app";
}
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)];
self.navigationItem.backBarButtonItem = leftButton;
[leftButton release];
self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
self.webView.scalesPageToFit = YES;
self.webView.delegate = self;
[self.view addSubview:self.webView];
NSString *path = [[NSBundle mainBundle] pathForResource:pathForResource_ ofType:@"html"];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
[super viewDidLoad];
}
- (void)webViewDidStartLoad:(UIWebView*)webView {
NSLog(@"%s", __func__);
// ページ読込開始時にインジケータをくるくるさせる
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView*)webView {
NSLog(@"%s", __func__);
// ページ読込完了時にインジケータを非表示にする
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
NSLog(@"%s", __func__);
// 読み込みに失敗した場合は前のページに戻る
[self dismissModalViewControllerAnimated:YES];
}
- (void)viewDidUnload {
webView_.delegate = nil;
[webView_ release], webView_ = nil;
[pathForResource_ release], pathForResource_ = nil;
[super viewDidUnload];
}
- (void)dealloc {
webView_.delegate = nil;
[webView_ release], webView_ = nil;
[pathForResource_ release], pathForResource_ = nil;
[super dealloc];
}
@end
大切なことは、webView_をreleaseする時は、delegateにnilをセットする必要があることです。
htmlはResourcesフォルダ配下に設定します。ここでは、about_app.htmlというHTMLファイルを設定しています。
サーバー側において呼び出す場合は、通信エラー処理も追加しましょう。エラーメッセージはalertで表示するのがiphoneコーディングの流儀です。
このソースをコンパイルして実行すると、以下のような画面が表示されます。
図1.アプリについて画面(iphone)
ナビゲーションバーの下にロードしたHTMLが表示されています。
以上で移植作業は完了になります。
一度慣れてしまえば、HTML共通化コーディングはアプリ作成作業をとても楽にします。
開発者のみなさんが、楽しい開発ライフを送って定時で帰宅できることを祈ってます。
でわ。
この記事がお役にたちましたらシェアをお願いします