0

インターフェイスビルダーでテーブルビューを作成し、データソースを接続してそこでファイル所有者に委譲する場合、上記のビューコントローラーの実装でもこれを行う必要がありますか?

@interface myViewController : UIViewController **<UITableViewDataSource**, **UITabBarControllerDelegate>**

つまり、プロトコルの遵守を手動で指定しますか?

ありがとう、

4

3 に答える 3

3

インターフェイスビルダーからデリゲートとデータソースを設定する場合、そのクラスが準拠するプロトコルを指定する理由はないようです。

言語は非常に動的であり、デリゲート メソッドを呼び出すこのプロセスは、オブジェクトに必要なメソッドがあるかどうかを確認せずに実行時に行われるため、手動で指定しなくても機能します。

コードからデリゲート/データソースを設定する場合にのみ、デリゲート/データソースが必要なプロトコルに準拠しているかどうかを確認するための静的型チェックが行われます。

結論:それらを書いてください。xcode オートコンプリート、場合によっては警告、コード ドキュメント、OCD フルフィルメントが表示されます。

于 2013-08-04T09:45:37.903 に答える
1

はい。クラスがプロトコルを実装することをコードで指定することは、接続を確立できることを XIB に伝え、プロトコルから必要なすべてのメソッドを実装する必要があることをコンパイラに伝えます (実装されていない場合は警告が発生する必要があります)。 .

技術的にはそれらがなくてもできますが、そうすべきではありません。

于 2013-08-04T09:39:36.347 に答える
-1

試してみましたか?なしで動作しましたか?

ヘッダー ファイルに UITableViewDataSource と UITabBarControllerDelegate を追加すると、interfacebuilder でのみ接続できます。

実装に必要なメソッド ( datasource & delegate )を実装することを忘れないでください。それらを忘れると警告が表示されます。

于 2013-08-04T09:42:44.090 に答える