didSelectRowAtIndexPath не вызывается - PullRequest
3 голосов
/ 02 августа 2011

У меня есть UITableView внутри UIViewController, например:

.h

@interface OutageListViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> {
   IBOutlet UITableView *outageTable;

.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"Selected");
}

Я настроил ячейку таблицы:

// РЕДАКТИРОВАТЬ У меня есть огонь UILabel рядом на моем настраиваемом виде, а также фон, распространяющийся по всей области.Но после изменения размера / удаления фонового изображения и метки, которые я поместил в настроенную ячейку, «didSelectRowAtIndexPath» по-прежнему не вызывается.// END EDIT

@interface AbstractSummaryListViewCell : UITableViewCell {...}

и

@interface FiveColumnSummaryCell : AbstractSummaryListViewCell {...}

Этот UIView находится внутри другого UIView:

@interface CustomTabBarController : UIViewController {
   OutageListViewController *outageListViewController;

И мой AppDelegate добавляет это к окну:

[window addSubview:[customTabBarController view]];

Теперь я пытаюсь определить, по какой ячейке щелкают, а didSelectRowAtIndexPath не вызывается, у меня есть dataSource и делегат, соединяющийся из UITableView с владельцем файла, фактически данные правильно заполняются как мой "cellForRowAtIndexPath"уточняет, есть идеи как можно это исправить?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 02 августа 2011

Я решил: забыл проверить Взаимодействие с пользователем включено в моей настроенной ячейке XIB. Что за дурак!

3 голосов
/ 02 августа 2011

Являются ли следующие свойства UITableView всеми YES?

  • allowsSelection
  • allowsSelectionDuringEditing

Edit: Я думаю, что Пол прав. Свойство делегата имеет некоторые проблемы. Вы можете проверить свойство делегата tableView внутри - (void) viewDidLoad. Как вы сказали, они должны быть подключены к FileOwner в xib. Таким образом, следующие коды не получат ноль.

- (void)viewDidLoad {
   [super viewDidLoad];

   // They should not be nil.
   NSLog(@"delegate:%@ dataSource:%@", self.tableView.delegate, self.tableView.dataSource);
}
2 голосов
/ 02 августа 2011

Возможно, контроллер вида не был подключен к свойству delegate outageTable где-либо.

0 голосов
/ 02 августа 2011

Вы можете сделать быстрый тест ... Удалите "большую" метку и посмотрите, вызывается ли didSelectRowAtIndexPath.

...