2014年11月24日 星期一

WebViewオブジェクトを使ってみよう - 004


おはようございます、ひろしです。
今回はプロトコルについて話したいと思います。

WebViewオブジェクトを使ってみよう - 001
WebViewオブジェクトを使ってみよう - 002
WebViewオブジェクトを使ってみよう - 003

いままでやっていたことは、WEBVIEWとかBAR BUTTONとかを色々設定し、プログラミングしてウェブを開くことができます。ですが、プログラミングはどうやって以下のことがわかるでしょうか?

  1. このウェブは本当にLOADINGされましたか?
  2. このウェブりんくはなんですか?
  3. このウェブはいつロード完成しましたか?
ここで、Delegateという便利な方法ががあります。Delegate1つのオブジェクトとして別のオブジェクトとコミュニケーションことができ、色々なタスクができます。

Delegateしたいなら、簡単といえばこの3つのステップがあります:
  1. カスタムクラスでDelegateのプロトコルを受けます。
  2. プロトコルのMETHODを実装します。
  3. DelegateのOutletとあなたのDelegateオブジェクトを繋がります。
ステップ1:
まずなんのオブジェクトはどんなDelegateするのは決めます。
ここで、カスタムクラスで、UIWebViewDelegateを使いたいと思います。
ステップ2:
XCODEー>HELPー>Documentation and API Referenceで、UIWebViewDelegateはどんなMETHODがあるのか見てみましょう。

ステップ3:
Documentationをみて、下の4つのMETHODが見つかるはずです。
  • - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request  navigationType:(UIWebViewNavigationType)navigationType; 
    • ユーザーがリンクの上でTAPする時、Delegateへメーセージを送ります。
  • - (void)webViewDidStartLoad:(UIWebView *)webView; 
    • もしウェブはロード始まりの時Delegateへメーセージを送ります。
  • - (void)webViewDidFinishLoad:(UIWebView *)webView;
    • もしウェブはロード完成したのDelegateへメーセージを送ります。
  • - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 
    • もしウェブはロードできない時Delegateへメーセージを送ります。
今度は2番めから4番目までのMETHODを利用します。

ステップ4:
カスタムクラスの.m(Implementation)フェイルで以下のコートを書きましょう。
  • - (void)webViewDidStartLoad:(UIWebView *)webView; 
  • - (void)webViewDidFinishLoad:(UIWebView *)webView;
  • - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 

ステップ5:
DelegateしたWebViewとViewControllerを繋がりましょう。
WEBVIEWを選択し、CONTROL+引いてViewControllerを繋がりましょう。
黒メニューが出て、Delegateを選択してください。

ステップ6:
最後はこんな感じですね。

ステップ7:
テストしてみましょう!

ウェブがロードできない時は…
  • エラーメッセージができてきます。
  • Shorten Buttonが押せません。
ウェブがロード完成した時は…
  • リンクのところはちゃんと今みているのウェブのリンクが表示されています。
  • Shorten Buttonが押せます!

今回もお疲れ様でした。
次はこのリンクを短くする方法を紹介したい思います。
じゃーね。




沒有留言:

張貼留言