0

重複の可能性:
UITableView で押された UIButton の検出

UITableViewCell に UIButton を追加しました。このボタンで "didSelectRowAtIndexPath" を呼び出す必要があります。呼び出しについては既に知っています。

  [self tableView:self.tableView didSelectRowAtIndexPath:indexpath];

しかし、インデックスパスを取得できず、試してみたという問題

[self.Tableview indexPathForRowAtPoint:[self.view convertPoint:[sender center] fromView:self.Tableview]]

メソッドですが、同じ CGPoint を返します。

4

2 に答える 2

4

まず、自分自身に直接電話しないでdidSelectRowAtIndexPathください。これはデリゲート メソッドであり、テーブル ビューで呼び出す必要があります。

代わりに、やりたいことを行う別のメソッドを作成し、それを から呼び出しますdidSelectRowAtIndexPath

次に、次のようにインデックス パスを取得できます。

UIButton* button = (UIButton*) sender;
UITableViewCell *cell = (UITableViewCell*)button.superview.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

これが機能するのは、すべてが標準的な方法で設定されている場合、ボタンのスーパービューはセルのcontentViewであり、セルのサブビューである必要があるためです。

于 2012-08-14T11:22:28.243 に答える
0

私によると最善の方法は、ROW NUMBER AS TAG VALUE FOR tableViewCell' buttonを指定することです。そのため、ボタンをクリックすると、そのアクションが呼び出され、そこから送信者 IDが取得されます。sender_id は UIButton インスタンスにすぎず、そのタグ値をフェッチします。

例: UIButton *testButton; があります。
そのセレクターは @selector (testButtonPressed:)

したがって、tableViewCell のボタンが押されると、@selector (testButtonPressed:) が呼び出されます。

-(void)testButtonPressed:(id)sender
 {
     NSLog(@"index is %d", sender. tag);
 }
于 2012-08-14T11:43:12.930 に答える