Проблема в том, что у вашего pushDetailView:
метода нет переменной indexPath
в своей области действия.
Вместо
- (void)pushDetailView:(UITableView *)tableView {
Вы должны сделать свой метод следующим образом:
- (void)pushDetailView:(UITableView *)tableView andIndexPath: (NSIndexPath*) indexPath {
, а затем indexPath
будет объявлено в области видимости метода.
Затем внутри вашего метода didSelectRowAtIndexPath
замените
[self performSelector:@selector(pushDetailView:) withObject:tableView afterDelay:0.1];
на код, приведенный ниже:
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self pushDetailView: tableView andIndexPath: indexPath];
});
Здесь используется GCD
для выполнения кода после задержки вместо performSelector: withObject :afterDelay:
, а вот хороший пост , объясняющий, почему иногда лучше выбрать этот подход