prepareForSegue вызывается перед didSelectRowAtIndexPath только при добавлении третьего перехода

У меня 3 перехода к 3 различным взглядам. 2 реализованы без проблем, именно когда возникает третий, проблемы возникают.

У меня есть следующий метод didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@" ----------  did select row");

    if(indexPath.section == 0){
        if(indexPath.row == [self.data count]-1){
            //prior to adding this, everything works
            [self performSegueWithIdentifier:@"MoreComments" sender:self];
        }else{
            [self performSegueWithIdentifier:@"FriendView" sender:friend];
        }
    }else if(indexPath.section == 1){
        if(indexPath.row == [self.data2 count]-1){
            [self performSegueWithIdentifier:@"MorePosts" sender:self];
        }else{
            [self performSegueWithIdentifier:@"FriendView" sender:friend];
        }
    }
}

У меня есть следующий метод prepareForSeque:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"MorePosts"]){
        MorePostsViewController *mfamvc = segue.destinationViewController;
        mfamvc.data = self.data;
    }else if([segue.identifier isEqualToString:@"FriendView"]){
        FriendViewController *fvc = segue.destinationViewController;
        fvc.friend = friend;
    }else if([segue.identifier isEqualToString:@"MoreComments"]){
          MoreCommentsViewController *mcvc = segue.destinationViewController;
          mcvc.data = self.data2;
    }
}

Перед перетаскиванием элемента управления из моей ячейки в последний вид я вижу, что моя программа нажимает "Отбой" и затем готовится к операции. Это делает всю навигацию просмотра идеальной.

Как только я контролирую перетаскивание из своей ячейки в MoreCommentsViewController, я начинаю видеть ошибку:

вложенная push-анимация может привести к повреждению панели навигации. Завершение перехода в непредвиденное состояние. Дерево подпунктов панели навигации может быть повреждено.

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

Что я делаю не так, чтобы условно перейти к этим разным взглядам?

2 ответа

Решение

Причина в том, что вы не можете перетащить из ячейки таблицы в несколько представлений. Как сказал @rdelmar, это неправильно. Вы должны перетащить из пункта назначения в исходный вид, а затем обработать вручную, как я делал выше.

Также можно найти здесь: условный переход выполняется на кран на UITableViewCell

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

переход между контроллерами представления

Теперь вы можете выбрать этот новый переход, перейти к "инспектору атрибутов" (опция+команда+4) и предоставить идентификатор раскадровки, на который вы можете ссылаться в своем коде при вызове performSegueWithIdentifier,

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