2016-11-28 5 views
0

Можно ли перечислить от A до C, но включая B в стеке навигации? Итак, если бы я уволил C, я бы вернулся к B?Segue от A до C, включая B

Я осмотрелся и не нашел ничего, что объясняет это. Я попытался решить его с помощью NSNotificationCenter, но не очень хорошо работал.

ответ

1

легко

[self.navigationController pushViewController:B animated:NO];

B - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController pushViewController:mYEKCollectionViewController animated:YES]; }

+0

mYEKCollectionViewController является C, кстати, можно использовать флаг Contrl вид B появится код B viewWillAppear. –

+0

Да, это работает .. Но есть ли более плавный способ сделать это? Кажется, довольно "Hacky" –

+0

A: '[self.navigationController addChildViewController: B];' –

0

Да. Вы можете редактировать содержимое в диспетчере просмотра uinavigationcontroller.

информации здесь: https://developer.apple.com/reference/uikit/uinavigationcontroller/1621873-viewcontrollers?language=objc

Вам потребуется уведомление или другой механизм, чтобы найти правильное время, чтобы изменить список. Но если контроллер просмотра указан в стеке viewcontrollers, вы не сможете вернуться к нему.

+0

Могли вы подробно изложите свое последнее предложение? Не имеет смысла. –

+1

Вы переходите от A к C. Когда C будет показан, вы вставляете B в список viewControllers. Вероятно, вы должны использовать viewWillAppear, но есть и другие уведомления, которые расскажут вам об одном и том же. – madmik3

0

Перед нажатием C к навигации стека, добавьте B так, что, когда вы поп последний ViewController в C, вы получите обратно B

self.navigationController?.viewControllers.append(B) 
self.navigationController?.pushViewController(C, animated: false) 
0

Попробуйте для поддержания навигационной последовательности ... A - > B -> C

1. go to ViewController C 

    ViewControllerc *objvcC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerC"]; 
    [self.navigationController pushViewController:objvcC animated:YES]; 



2. then add ViewController to existing navigation stack 


    ViewControllerB *objViewControllerB = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerB"]; 
    NSMutableArray *existNavigationArray = [self.navigationController.viewControllers mutableCopy]; 
    [existNavigationArray insertObject:objViewControllerB atIndex:existNavigationArray.count -1]; 
    self.navigationController.viewControllers = existNavigationArray; 
0

у вас есть два варианта

  1. Append B первого и вызвать толчок для C

    self.navigationController?.viewControllers.append(B) 
    self.navigationController?.pushViewController(C, animated: false) 
    
  2. вызов нажатием C и добавить к второй последний для B

    self.navigationController?.pushViewController(C, animated: false) 
    self.navigationController?.viewControllers.insert(B, at: self.navigationController?.viewControllers.count - 1) 
    

Делайте то, что это возможно для вас.

И вы также можете сделать это, как звонок pushViewController для C в viewWillAppear из B

Смежные вопросы