ios開發入門- WebView使用

目標 : 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;
}

保存運行 ,這裏沒有實現 錯誤的 方法喔 ,各位童鞋如果有興趣 ,可以自己 是試試

搞定 。  不明白之處 歡迎留言,一起學習共同進步。

源碼 下載地址:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章