前回は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共通化コーディングはアプリ作成作業をとても楽にします。
開発者のみなさんが、楽しい開発ライフを送って定時で帰宅できることを祈ってます。
でわ。
0 件のコメント:
コメントを投稿