2016-04-27 5 views
0

У меня есть firstViewController, встроенный в firstNavigationController, который имеет modal segue для нового secondViewController, встроенного в другой secondNavigationController. Этот новый контроллер выполняет разматывания SEGUE назад к firstViewControllerUnwind Segue Goes Back Too Far

secondViewController:

- (void) cancelAction{ 
    [self performSegueWithIdentifier:@"backHoney" sender:self]; 
} 

firstViewController:

- (IBAction)backToHoney:(UIStoryboardSegue *)sender{ 
} 

Это работает, но есть случай, когда другой viewC вкладывается в Nav имеет modal segue для firstViewController. Когда пользователь перейдет от этого viewC к firstViewController, то к secondViewController и попытается откинуться назад к первому, он снова разматывается до viewC вместо первого.

ответ

0

вы должны использовать popToviewController вместо unong segue. вы можете перейти к любому viewController стека навигации.

, например,

NSArray *viewArr = [self.navigationController viewControllers]; //returs viewcontroller array 
[self.navigationController popToViewController:[viewArr objectAtIndex:0] animated:YES]; 
//you can pass different index to go to differen VC 

Вы можете обратиться мой this answer более подробно.

надеюсь, что это поможет :)

+0

мне нужно отдохнуть от '' secondNavController' к firstNavController'. Также передают данные. Разве это не просто для навигации по всем viewControllers внутри одного и того же NavController? @Lion – Peter

+0

вы можете использовать делегат и протокол для передачи данных. нет ничего обязательного в использовании разматывания. – Lion