Почему мой стек навигации перепутал после размотки segue? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть маршрут навигации, который выглядит следующим образом:

enter image description here

A - это UITableViewController, встроенный в контроллер панели вкладок.Нажатие на одну из строк переходит к B, который является контроллером представления, встроенным в контроллер навигации.Нажатие на розовую кнопку на B переводит контроллер вида C, а касание «Недавних песен» переходит к D.Наконец, нажатие песни на D запускает метод uploadSong()

-(void) uploadSong {
    ViewControllerB *viewControllerB = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerB"];
    ViewControllerA *viewControllerA = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerA"];

    NSArray *vcArray = @[self,viewControllerA,viewControllerB];
    [self.navigationController setViewControllers:vcArray animated:YES];
    [self performSegueWithIdentifier:@"unwindToViewControllerB" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"unwindToViewControllerB"]){

        ViewControllerB *viewControllerB = segue.destinationViewController;
        viewControllerB.object = self.friendObject;
        viewControllerB.spotifyDismiss = YES;
        viewControllerB.hidesBottomBarWhenPushed = YES;
    }
}

Все идет хорошо, и я в итоге возвращаюсь к B с кнопкой возврата контроллера навигации, возвращающей меня к Aкак я и хотел.Тем не менее, я обнаружил, что если я вместо этого нажму на элемент панели вкладок (внизу слева), он снова покажет мне D вместо того, чтобы делать то, что обычно в приложениях, и приведет вас к первому контроллеру представления в стеке, который в этом случае будетbe A.

Итак, мой вопрос: почему после моего отката моя кнопка возврата с B переводит меня на A, но нажатие на элемент панели вкладок переводит меня к D вместоA

1 Ответ

0 голосов
/ 04 октября 2018

Казалось бы, исправление просто помещало контроллеры представления в vcArray в очевидном правильном порядке [viewControllerA, viewControllerB, self] вместо [self, viewControllerA, viewControllerB].Теперь мой стек навигации работает точно так же, как и при нажатии кнопки «Назад» или элемента панели вкладок.

...