Разве TableView не генерирует событие didSelectRowAtIndexPath, когда выбор сделан программно? - PullRequest
0 голосов
/ 18 августа 2011

Я использовал следующий код для программного выбора ячеек таблицы

- (void) selectTableCell{
NSIndexPath *ip = [NSIndexPath indexPathForRow:0 inSection:0];
[tableView selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionBottom];

NSIndexPath *ip1 = [NSIndexPath indexPathForRow:1 inSection:0];
[tableView selectRowAtIndexPath:ip1 animated:YES scrollPosition:UITableViewScrollPositionBottom];}

В целях тестирования я хотел сделать это. Как сгенерировать событие didselect?

Спасибо, Лалитй

Ответы [ 2 ]

6 голосов
/ 18 августа 2011

Документация явно говорит вам, что происходит:

Вызов этого метода не приводит к тому, что делегат получает сообщение tableView:willSelectRowAtIndexPath: или tableView:didSelectRowAtIndexPath:, и при этом он не отправляет UITableViewSelectionDidChangeNotification уведомления наблюдателям.

Вы можете попытаться вызвать эти методы самостоятельно, но вы не уверены, что они будут воспроизводить исходную функциональность.

Для тестирования вашего пользовательского интерфейса вам, вероятно, следует использовать пользовательский интерфейс на основе инструментов.Автоматизация тестирования, если это возможно.

5 голосов
/ 18 августа 2011

Я думаю, это должно работать:

if ([tableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) {
    [tableView.delegate tableView:tableView didSelectRowAtIndexPath:ip];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...