【发布时间】:2019-03-09 08:18:44
【问题描述】:
我的导航路线如下所示:
A 是嵌入在标签栏控制器中的UITableViewController。
点击其中一行到B,这是一个嵌入在导航控制器中的视图控制器。点击B 上的粉色按钮会推送视图控制器C,然后将“Recent Songs”转至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。
所以我的问题是,为什么在我的 unwind segue 之后,我的后退按钮从 B 将我带到 A,但点击标签栏项目会将我带到 D 而不是 A?
【问题讨论】:
标签: ios objective-c uinavigationcontroller navigation unwind-segue