2014-10-03 2 views
0

Каждая ячейка моего UITableView содержит пользовательский UIButton. Я не могу обнаружить, в какой ячейке находится текущая нажатая кнопка. Метод вызывается, но indexPath.row всегда 0. Любые предложения?Пользовательские UIButtons в UITableViewCell (необходимо определить строку)

-(IBAction)editButtonTouch:(id)sender { 
    UITableViewCell *cell = (UITableViewCell *)[sender superview]; 
    NSIndexPath *indexPath = [[self tableView] indexPathForCell:cell]; 
    switch([indexPath row]) { 
     case 0: 
      NSLog(@"first row"); 
      break; 
     case 1: 
      NSLog(@"second row"); 
      break; 
    } 
} 
+0

, что именно вы хотите сделать? –

+0

Сделайте editButtonTouch определите, какую строку в данный момент коснулся пользователь. –

ответ

1

Это:

UITableViewCell *cell = (UITableViewCell *)[sender superview]; 

на самом деле должен быть

UITableViewCell *cell = (UITableViewCell *)[[[sender superview] superview] superview]; 

Но лучший способ сделать это показано здесь: Detecting which UIButton was pressed in a UITableView

+0

(UITableViewCell *) [[[sender superiew] superiew] superview]; не работает (indexPath все еще всегда 0). Посмотрите связанный поток. –

+0

ОК, поэтому я изменил этот ответ, удалив один вызов супервизора (оставив только два), и это сработало! Спасибо @marosoaie :) –