0

画面上のすべての要素、つまりテーブル、テキストフィールドなどとともに、各画面が動的に追加されるアプリケーションがあります。各viewControllerは同じNIBを使用します。基本的にはJSONをループし、新しい画面ごとに、新しい ViewController オブジェクトを作成して配列に追加します。オブジェクトを画面に追加するために同じことを行います。

つまり、ある画面には tableView デリゲート メソッドが必要な場合があり、別の画面にはテキスト フィールド デリゲート メソッドが必要な場合があります。インターフェイス ファイルにデリゲートが実装されていない場合、これを行うことはできません。

 textField.delegate = self;

また

tableView.delegate = self;
tableView.dataSource = self;

エラーが発生するためです。

私が持っている可能性が高いすべてのデリゲートメソッドを追加するだけで、悪い習慣になるでしょうか?

@interface Testing : UIViewController<UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UITextViewDelegate, UIWebViewDelegate>

次に、すべてのメソッドを実装し、必要な場合にのみ呼び出すようにします。それとも、これは悪い考えでしょうか?

または、これを設定するより良い方法はありますか?

どんな情報でも大歓迎です。

4

2 に答える 2

1

はい、必要なデリゲート メソッドを実装でき、必要なときにいつでも呼び出されます。常に推奨されるアプローチです。

于 2012-10-22T10:56:56.837 に答える
1

ショットガン アプローチの 1 つは、デリゲートから型を取り除くことです。

textField.delegate = (id) self;

デリゲートがプロトコルの要求どおりにメッセージに応答することが何らかの形で保証されている場合、すべてが正常に機能します。これが醜いハックなのか洗練された解決策なのかは、問題の詳細によって異なります。

于 2012-10-22T10:46:35.307 に答える