Подтвердить что ты не робот

Как программно "нажимать" ячейку UITableView?

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

//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];

Ответ 3

Swift 3.2 Решение

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)

Ответ 4

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

Ответ 5

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

// ... 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];