3

したがって、tableView セルに 3 つのボタンが必要です。カスタムセルを作成したので、カスタムセルのボタンを何度もカスタマイズするのではなく、一度カスタマイズしますcellForRowAtIndexPath

しかし、私が使用している3つのボタンすべてにセレクターを追加したい

[cell.btn1 addTarget:self action:@selector(firstAction:) forControlEvents:UIControlEventTouchUpInside];

内部cellForRowAtIndexPath。それが最善の方法ですか?セルをスクロールするたびに addTarget が初期化され、再初期化されませんか? それは余分な過負荷になりませんか?私が知らないこれを行うより良い方法はありますか?

編集

これは、押されたボタンが属するセルを特定する方法です

CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.feedTableView];
NSIndexPath *indexPath = [self.feedTableView indexPathForRowAtPoint:buttonPosition];
4

2 に答える 2

1

ストーリーボードまたは XIB ファイルを使用して、ボタンのターゲットとアクションを設定できます。より興味深い問題は、ボタンが押されたテーブル セルを特定することです。

rowUIButton をサブクラス化し、サブクラス化された UIButton に " " または " " プロパティを追加することをindexPathお勧めします。これは、テーブルフィード " cellForRowAtIndexPath" メソッドで設定しsender、ボタンが押されたときにボタンがクリックされた行を (" ") から抽出できます。あなたのアクションが呼び出されます。

于 2013-05-15T17:29:06.013 に答える
0

カスタム セルにデリゲートを作成し、任意のボタンがクリックされたときにこのデリゲートが起動されるようにする必要があります。いくつかのコードサンプル:

@protocol CustomCellDelegate
-(void)cell:(UITableViewCell *)cell buttonTapped:(UIButton) atIndexPath:(NSIndexPath *)indexPath;
@end

@interface CustomCell
property (weak) id<CustomCellDelegate> delegate;
@end

@implementation CustomCell
-(void)buttonTapped {
  // fire delegate here
}
@end

また、無料の Sensible TableView フレームワークを確認することを強くお勧めします。このフレームワークを使用すると、このようなカスタム セルをボタンで簡単に処理できるからです。過去数か月間、私はそれで多くの時間を節約してきました。

于 2013-05-16T03:59:02.087 に答える