Segue раскадровки вызывается до didSelectRow UITableView

У меня есть раскадровка с переходом из ячейки таблицы. Я хочу установить некоторые свойства с некоторыми данными при выборе строки, поэтому я делаю следующее:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]];


}

Проблема в том, что методы жизненного цикла контроллера представления (viewWillAppear и т. д.) целевого контроллера представления вызываются до метода didSelectRow, описанного выше, потому что переход отправляет представление до выполнения метода делегата.

Как я могу обойти это?


person Mohamed Emad Hegab    schedule 20.11.2012    source источник


Ответы (2)


Не создавайте переход от ячейки к новому виртуальному каналу, вместо этого установите переход от старого виртуального канала к новому виртуальному каналу и присвойте переходу идентификатор.

Затем в течение

didSelectRowAtIndexPath можешь позвонить

[self performSegueWithIdentifier:@"Segue" sender:self]

person Rawkode    schedule 20.11.2012

Ответ Rawkode является одним из хороших решений - альтернативой является то, что в prepareForSegue: вы можете получить доступ к выбранной строке табличного представления (аргумент sender будет ячейкой табличного представления, затем вы можете сделать [self.tableView indexPathForCell:(UITableViewCell*)sender], чтобы получить индексный путь) и настроить все, что вам нужно в этот момент.

person jrturton    schedule 20.11.2012
comment
спасибо, ваш ответ помог мне понять кое-что еще и понять больше :) - person Mohamed Emad Hegab; 21.11.2012