標籤:
轉自:http://mahaile.blog.51cto.com/2891586/1021515/
目標 : webview使用
在一些移動app中,有時程式會載入 外表的html 介面, android 有 webView ios 有嗎, 答案是肯定的, 下面我們來看看 ios 下面的webView 是怎麼使用的吧
啟動Xcode 建立一個新的ios 項目 , 模板選擇 Signle view application , 項目名稱命名為 Iphone_sample_WebView class Prefix 命名為 : WebView
進入項目 ,開啟 WebViewViewController.xib 視圖檔案 拖一個WebView 組件到view中
點擊助理編輯器
此時介面如下
為webview 建立串連 : 按住 ctrl 鍵 拖webview組件到 WebViewViewController.h 檔案中的@interface WebViewViewController : UIViewController<UIWebViewDelegate> 代碼 下面 :
鬆開滑鼠 ,位置正確的話 如, 會彈出一個對話方塊,讓你填寫串連資訊 : 我們只填 Name 值 就可以了 在name 內容框填寫 “webView” 點擊 connent 完成串連
執行這一步 xcode 會為我們產生一系列的代碼,在WebViewViewController.h 檔案中產生了一個輸出口,在WebViewViewController.m 檔案中產生了webView對象的管理方法。 各位童鞋細心觀察下 就會知道
下面我們在 WebViewViewController.m 控制器中為webview 添加行為
在 WebViewViewController.m檔案的 - (void)viewDidLoad 方法中 添加一下代碼
- (void)viewDidLoad
{
[super viewDidLoad];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self.webView loadRequest:request];
// Do any additional setup after loading the view, typically from a nib.
}
運行我們的模擬器 看看吧, 這時我們已經可以 在視圖上開啟 百度地址了。 :
但這在實際應用中遠遠還不夠呢, 因為移動網路的問題,可能會出現html頁面打不開,開啟慢,或者出錯等等,我們都需要坐相應的提示操作。所以我們還需要繼續給webview 最佳化下,讓使用者體驗更好 。
下面我們看看webview 幾個常用的方法
一.UIWebView載入的時候通常有幾種方法
1.loadRequest:
2.loadHTMLString:string baseURL:
3.loadData:MIMEType:textEncodingName:baseURL:
其中baseURL 是指基準的url 是一個絕對的地址,程式要用到的其他資源就可以根據這個基準地址進行尋找而不用再次定位到絕對位址;
二.UIWebView中幾個重要的函數
1.- (void )webViewDidStartLoad:(UIWebView *)webView 網頁開始載入的時候調用
2.- (void )webViewDidFinishLoad:(UIWebView *)webView 網頁載入完成的時候調用
3.-(BOOL )webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType )navigationType
當程式以UIWebView載入方式1進行載入的時候就會調用到此函數,然後執行webViewDidStartLoad函數,所以我們可以在此函數中進行一些請求解析,URL地址分析的工作。
4.- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
是一個可選的函數,如果頁面載入失敗可以根據不同的錯誤類型反饋給使用者不同的資訊
那我們在代碼中如何?這幾個方法呢
1: 在WebViewViewController.h檔案中 聲明協議 在.h 添加下面紅色部分的代碼
@interface WebViewViewController : UIViewController<UIWebViewDelegate>
@property (retain, nonatomic) IBOutlet UIWebView *webView;
@end
2:在WebViewViewController.m 檔案中實現下面幾個方法
1.- (void )webViewDidStartLoad:(UIWebView *)webView 網頁開始載入的時候調用
2.- (void )webViewDidFinishLoad:(UIWebView *)webView 網頁載入完成的時候調用
3.- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 網頁載入錯誤的時候調用
我們就可以在這幾個方法裡面做處理了。
接著上面的繼續 ,往下坐 , 在載入的時候 給使用者等待提示,載入完成後 取消等待提示
1:開啟WebViewViewController.xib 檔案 在視圖檔案拖一個 Actionvity IndicationView 組件,擺好位置, 並且添加串連 此步和 webView 添加串連步驟是一樣的 忘了 看看上面去 。嘻
2:給webView 添加委託 在WebViewViewController.m 檔案中- (void)viewDidLoad方法中 給webview 添加委託 最終如下面代碼
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webView setDelegate:self];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.163.com"]];
[self.webView loadRequest:request];
// Do any additional setup after loading the view, typically from a nib.
}
因為必須給 webview添加委託 才可以回調那個幾個webview 函數喔 這一步不要忘了喔
各位童鞋 也可以直接在 xib視圖檔案中直接給webView添加委託,按住ctrl鍵 點擊ViewView組件 然後選擇 OutLets 下面的 Delegate 拖至File,s Ownver 即可
然後 在 WebViewViewController.m 檔案的實現下面代碼
-(void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"load ing");
[activityIndicationView startAnimating];
activityIndicationView.hidden=NO;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"finish ing");
[activityIndicationView stopAnimating];
activityIndicationView.hidden=YES;
}
儲存運行 ,這裡沒有實現 錯誤的 方法喔 ,各位童鞋如果有興趣 ,可以自己 是試試
搞定 。 不明白之處 歡迎留言,一起學習共同進步。
ios開發入門- WebView使用