[英]Why is my navigation stack mixed up after unwind segue?
我有一条导航路线,如下所示:
A
是嵌入在标签栏控制器中的UITableViewController
。 轻触其中的一行就可以找到B
, 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
,而不是执行应用程序中常见的操作,然后带您进入堆栈中的第一个视图控制器,在本例中为A
。
所以我的问题是,为什么在放开序幕之后,我从B
后退按钮会将我带到A
,但是点击选项卡栏项会将我带到D
而不是A
?
这似乎是修复被简单地把视图控制器在vcArray
在明显正确的顺序[viewControllerA, viewControllerB, self]
而不是[self, viewControllerA, viewControllerB]
现在,无论我点击“后退”按钮还是选项卡栏项,导航堆栈的行为都应完全一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.