popToRootViewController вызывается перед viewWillAppear

У меня есть UITableviewController и когда строка выбрана, я хочу вернуться к моей rootViewController и пусть он отображает текст строки в табличном представлении. То, что происходит сейчас, это viewWillAppear в моем обычном представлении контроллер вызывается до того, как popToRootViewController функция вызывается, поэтому, когда она переходит к обычному контроллеру представления, она не отображает текст. Я пытался использовать viewDidAppear также и это не работает. Вот код, который я пробовал:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSLog(@"row was selected");
    user[@"school"] = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
    [[PFUser currentUser] saveInBackground];
    [self.navigationController popToRootViewControllerAnimated:YES];
}

А затем в обычном представлении контроллера:

- (void)viewWillAppear:(BOOL)animated
{
    NSLog(@"will appear ran");
    PFUser *currentUser = [PFUser currentUser];
    self.userSchoolLabel.text = currentUser[@"school"];
}

То, что я вижу в консоли, это распечатывает

"will appear ran"

а затем "строка была выбрана"

Как я могу решить эту проблему, даже если я вызываю метод popToRootViewController от нажатия кнопки на другом контроллере вида он работает нормально, проблема с выбором строки, я не уверен, почему?

Заранее благодарны за Вашу помощь. Я очень ценю это.

1 ответ

Решение

Обработка событий является частью методов Delegate. Ваш источник данных, кажется, является правильным, поскольку он показывает строку для вас. Таким образом, может быть, вы неправильно установили делегат вашего табличного представления. Если вы используете перо, подключите делегат вашего табличного представления или если вы использовали код для рисования табличного представления, просто проверьте _yourtable.delegate = self; установлен или нет.

Другая причина может заключаться в том, что если в ячейке табличного представления есть uiview, то это может убрать событие выбора строк.

Кроме того, если вы включили редактирование в табличном представлении, оно может не вызывать didSelectRowAtIndex: метод... подробнее см. Здесь

Другие вопросы по тегам