ios開發入門- WebView使用

來源:互聯網
上載者:User

標籤:

轉自: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使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.