我正在使用Storyboard for iOS 7 App。根控制器是一个菜单。对于几乎每个视图,我都有一个菜单按钮,使用[self.navigationController popToRootController:TRUE]将应用程序带回该菜单。但是,有两个UIView元素,我想清除导航控制器视图列表(当你弹回到根控制器时发生),但是然后立即转到另一个UIView而不让用户看到根控制器' s视图。一旦进入这个新视图,如果用户按下后退按钮,我希望他们进入菜单视图。
我试图在viewWillAppear中放置一个performSegue,但它确实搞砸了导航控制器和视图。我已经尝试在viewDidAppear中放置一个performSegue,但是用户首先看到菜单视图闪烁,然后看到正确的视图。
我希望我能够很好地解释这一点。我希望能做到这一点。
感谢。
答案 0 :(得分:1)
您最好的选择是自己构建导航控制器堆栈,然后使用- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated:
替换当前堆栈。
所以你可以做类似
的事情...
UIViewController *vcToPush = ...;
NSArray *newVCStack = @[[self.navigationController.viewControllers firstObject], vcToPush];
[self.navigationController setViewControllers:newVCStack animated:YES];
这将使用标准推送动画将新控制器添加到堆栈(如果您愿意,则将其添加到堆栈中),并在动画完成后将视图堆栈设置为数组的视图堆栈。