4

正直に言うと、代表団全体が少し混乱していますが、私はもっと良くしようとしています。

現在、UITableViewタスクのリストがあり+、新しいタスクを追加するためのモーダルビューを表示するボタンがあります。各タスクをタップして名前を変更することもできます。

委任を使用してこれをどのように実装しますか?明らかに、モーダルビューの結果はルートUITableViewを変更する(新しいセルを追加する)ので、委任が最良のオプションであると思います。そして編集についても同じです。

私は2つの別々のものをしますか?1?誰かが、委任スキームがどのように見えるかを概念的に教えてもらえますか?

4

2 に答える 2

2

私はこれを少し異なって/より単純に言います:委任はクラスが互いに話すことを可能にするいくつかの方法の1つです。これはObjective-Cに固有のものではなく、すべてのジョブに常に適したツールであるとは限りません。

TL; DR:心配しないでください-まだです!

委任がまだ何であるかについて心配する必要はありません。それは、本当に木を切り倒したいときに、ナイフがどのように作られるかを尋ねるようなものです。この場合、実行することでより多くの(そしてより速く)学ぶことができ、AppleのUITableViewドキュメントは素晴らしいです:

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/tableview_iphone/AboutTableViewsiPhone/AboutTableViewsiPhone.html

あなたがやろうとしていることは非常に構造化されており、新しいコードを発明する必要はありません。実際、基本的にはできません。Appleはすでにどのように機能するかを決定してUITableViewいるので、その背後にある理論を理解しても(まだ)役に立たない。

だから今のところ、恐れることはなく、上記のリンク(おそらくGoogleのUITableViewチュートリアル)を押してください。特定の問題が発生した場合(そして間違いなくそうなります)、ここでそれらについて投稿してください。:)

後で:委任の1分間の概要

..そしてある日、お互いに話し合う必要のある独自のクラスとサブクラスを作り始める必要がある時が来るでしょう。それはあなたが委任について知る必要があるときです!

('Table' UIViewController)を示すクラス(私は単に'You'と呼びます)のインスタンスがあると想像してください。UITableViewその場合、AppleUITableViewは委任を使用するように設計されているため、Tableはあなたにたくさんの質問をすることができます。テーブルはあなたに尋ねるかもしれません:私は何行を表示する必要がありますか?各列の高さはどれくらいですか?行72のセルはどのようになりますか?あなたはこれを知っていますが、Tableは知らないので、Tableは委任/データソースメソッドを介して答えを求めます。あなたのコードは答えで応答します。

さらに良いこと:クラスはあなたに物事を伝えるように強制することができます!例:「ユーザーがセルをタップした」、「自分を閉じようとしている」、「画面が回転した」。これらの方法の利点は、あらゆる種類の重大なイベントに対応して準備できることです。これはiOSプログラミングのHUUUUUUUGE部分であり、頻繁に遭遇します。

それは一言で言えば委任であり、クラスが互いに通信するためのさらに素晴らしい方法があります-たとえば、ブロック、場合によっては直接変数ストレージです。

そして、あなたが本当にもっと知りたいのなら、私はまだそれをお勧めしませんが、ここで別の良いアップルのドキュメントをチェックすることができます:

http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

于 2012-12-25T10:39:20.783 に答える
0

委任とは、代用という単純な概念を表す空想的な言葉です。UITableViewは、デリゲート(代用)を使用するように設定されているため、使用するたびにサブクラス化する必要はありません。メソッドをサブクラス化してオーバーライド(再定義)する代わりに、代役はビューの動作をカスタマイズするメソッドを提供します。

通常、テーブルビューコントローラをテーブルビューデリゲートにします。これが意味するのは、テーブルビューがデリゲートの質問(「この行の高さはどれくらいですか?」など)を尋ねられると、その質問をその代役であるコントローラーに渡すということです。

編集動作を定義できるデリゲートメソッドは、UITableViewDelegateプロトコルリファレンスで非常に明確に指定されています。UITableViewDataSourceのいくつかのメソッドが必要になる場合もあります。あなたは間違いなくAppleのテーブルビュープログラミングガイドを見たいと思うでしょう。インデックスの下部にリストされているサンプルコードプロジェクトに注意してください。

于 2012-12-25T04:36:06.163 に答える