jubilee

Programing, Books and more...

セルに追加したボタンの処理をViewControllerで行う

カスタムセルに追加したボタンの処理を、ViewControllerで行う方法。
タップされたボタンのセルのインデックスの取得。

Cell

  1. StoryBoard上でセル内にボタンを追加する
  2. Attribute inspector – view – Tag に値を設定する
  3. Outlet接続のみ行う(不要かも)

ViewController

ボタンのプロパティを宣言

1
@property (weak, nonatomic) UIButton *button;

ボタンとタップ時の処理を作成する

任意の場所で。

1
2
3
4
// Cellにボタンを設定した時のTag値
_button = (UIButton*)[cell viewWithTag:1];
// ボタンのイベントを登録
[_button addTarget:self action:@selector(buttonTapped:event:) forControlEvents:UIControlEventTouchUpInside];

タップ時の処理

1
2
3
4
5
6
7
8
9
- (void)buttonTapped:(id)sender event:(UIEvent*)event
{
    // タップされたボタンのセルインデックスを取得する
    UITouch *touch = [[event allTouches]anyObject];
    CGPoint point = [touch locationInView:_sampleTableView];
    _tappedIndexPath = [_sampleTableView indexPathForRowAtPoint:point];

    // 実行したい処理
}

参考