Как программно «нажать» на ячейку UITableView? - PullRequest
17 голосов
/ 07 мая 2011

Мне было интересно, есть ли способ, чтобы мой код мог «коснуться» ячейки в моем UITableView, чтобы воспроизвести поведение, указанное в методе делегата - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath.

Я предполагаю, другими словами, возможно ли программно вызвать метод делегата - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath?

Ответы [ 5 ]

36 голосов
/ 06 января 2012

если вы хотите выбрать ячейку, то есть выделите определенную ячейку:

//select first row of first section
NSIndexPath* selectedCellIndexPath= [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:selectedCellIndexPath animated:false scrollPosition:UITableViewScrollPositionMiddle];

Если вы хотите дополнительно инициировать действия в вашем методе didSelectRowAtIndexPath, вам нужно вручную вызвать метод делегата, это не произойдет автоматически:

[self tableView:self.tableView didSelectRowAtIndexPath:selectedCellIndexPath];
21 голосов
/ 07 мая 2011

Разве вы не можете поместить какую-либо логику в didSelectRowAtIndexPath в отдельный метод и просто вызвать этот метод из didSelectRowAtIndexPath и везде, где вы хотите вызвать тот же код?

1 голос
/ 26 июля 2017

Swift 3.2 Solution

let indexPath = IndexPath(row: 2, section: 0)  // change row and section according to you
tblView.selectRow(at: indexPath, animated: true)
tblView.delegate?.tableView!(tblView, didSelectRowAt: indexPath)
1 голос
/ 14 марта 2013

Это обновление 6.1. Когда вы используете segues - все советы хороши, но вы также должны вызывать segu. Итак - добавить к совету и обобщить его

// ... assuming we just added a new row - which is one use of what this thread is trying to do

/* get new count - this is the row we are going to highlight - 0 based */
 int newIndex = [dataArrayUnderlyingTable count]-1; 

/* make it look pretty by highlighting it */
    NSIndexPath *nip = [NSIndexPath indexPathForRow:newIndex inSection:0];
    [[self tableView] selectRowAtIndexPath:nip animated:YES scrollPosition:UITableViewScrollPositionBottom];

/* run the code in the following method so it is not missed */
    [self tableView:[self tableView] didSelectRowAtIndexPath:nip];

/* now 'tap' on it ... or simulate it */
    [self performSegueWithIdentifier: @"viewChildDetails" sender: self];
0 голосов
/ 07 мая 2011

Это всего лишь метод.Продолжайте и вызывайте его так же, как любой другой метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...