0

私のアプリケーションには、次のような構造があります。

5 つのボタンを持つ 1 つの UIView (これはナビゲーション コントローラーです)。各ボタンが押されると、ナビゲーション コントローラーで UItableView をプッシュします。私の問題は、独自のクラスを持ついくつかのカスタムセルを作成したことです。これらのセルにはいくつかのボタンがあります。これらのボタンのそれぞれが押されると、ナビゲーションコントローラーの別のビューを「プッシュ」したいです。問題は、セルのクラスでボタンのセレクターを作成すると、新しいビューをプッシュする「self.navigationcontroller」が認識されないことです。たとえば、ナビゲーションコントローラーをセルの init メソッドのパラメーターとして渡すにはどうすればよいですか?

セレクターをパラメーターとして渡すことを提案しないでください。後でほとんどすべてのビューに配置されるカスタム UIToolBar を初期化するクラスが必要なので、ナビゲーション コントローラーをパラメーターとして渡したいので、各ビューですべてのメソッドを再度作成する必要はありません。

4

2 に答える 2

1

あなたはいくつかのことをすることができます:

  1. デリゲート プロトコル設計パターンを使用します。セルのデリゲート プロトコルを作成し、View Controller をそれらのセルのデリゲートとして割り当てます。次に、ボタンが押されると、デリゲート (ビュー コントローラー) にメッセージを送信します。
  2. NSNotifications と NSNotificationCenter を使用する
  3. ブロックを使用する (ただし、これはここではあまり良いルートではありません)
  4. または、次のように、ビュー コントローラーをセル内のボタンのターゲットとして追加することもできます。

    // this would be in the cellForRowAtIndexPath method of your UITableViewDataSource (probably your UIViewController)

    [cell.button1 addTarget:self action:@selector(cellButton1Pressed:) forControlEvents:UIControlEventTouchUpInside];

于 2012-06-04T06:15:54.217 に答える
0

cell クラスの代わりに ViewController でボタン アクションを処理できます。

于 2012-06-04T06:18:23.550 に答える