2012-02-22 14 views
1

デリゲートパターンの仕組みを理解していると思いますが、その部分は私にとっては明らかではありません。デリゲートメソッドobjective-c

結果を返すカスタムデリゲートメソッドを作成するにはどうすればよいですか? 戻り値はどこに行くのですか? デリゲートメソッドでdataSourceを使用する方法

ここが私の言いたいことです。これはUITableViewDelegateのデリゲートメソッドです。返される値に応じて、テーブルの行の高さが異なります。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 22; 
} 

トピックに関するAppleのドキュメントを読みましたが、私はまだ混乱しています。

可能であれば、簡単なコード例を教えてください。

+1

テーブルビューにはそのデリゲートへの参照があるため、tvはデリゲートにheight値を問い合わせます。値はtvによって使用され、それに応じて行のサイズが変更されます。データソースとデリゲートは異なる役割を果たすという意味では異なりますが、両方のメカニズムは同じです。 –

答えて

1

非常によく徹底した説明herehereがあります。例のコードと、委任パターンの詳細があります。

1

委任は、デザインパターンと呼ばれるものの1つの例です。ここにはApple documentation on delegationがあります。

iOSでは、UIApplicationクラスは素晴らしい委任例です。 UIApplicationDelegateプロトコルでは、この(オプション)メソッドを指定します

- (void)applicationWillTerminate:(UIApplication *)application 

のUIApplicationのデリゲートは、このメソッドを実装することができ、アプリケーションを終了しようとしている場合、この方法は、実行するように機能するクラス。したがって、委任は既製のオブジェクト(この場合はUIApplication)でカスタマイズされた動作を可能にする技術です。アプリケーションは常に終了する必要がありますが、アプリが終了する直前に何が起こる必要があるかは、各アプリのプログラマが決定します。

Appleのドキュメントの状態:

あなたは、このような、共有リソースを解放し、ユーザーデータを保存し、タイマーを無効にし、に十分なアプリケーションの状態を保存するように、アプリケーションのための最終的なクリーンアップタスクを実行するには、このメソッドを使用する必要があります再起動時にアプリケーションのインターフェイスを再構成します。このメソッドの実装には、タスクを実行して戻るまでに約5秒かかります。時間が経過する前にメソッドが戻らない場合、システムはプロセスを完全に終了させる可能性があります。

関連する問題