2014-05-20 40 views
0

我正在使用iOS 7应用程序的故事板。根控制器是一个菜单。对于几乎每个视图,我都有一个Menu按钮,它使用[self.navigationController popToRootController:TRUE]将应用程序带回该菜单。但是,有两个UIView元素,我想要清除导航控制器视图列表(当您弹回到根控制器时会发生),但是会立即转到另一个UIView,而不让用户看到根控制器的视图。一旦在这个新视图中,如果用户按下后退按钮,我希望他们进入菜单视图。不显示旁路UIView

我试图把viewSection中的performSegue放在上面,但它确实会弄乱导航控制器和视图。我已经尝试在viewDidAppear中放置一个performSegue,但用户首先看到菜单视图闪烁,然后出现在正确视图的路上。

我希望我已经解释得很好。我希望这可以做到。

谢谢。

回答

1

最好的办法是自己构建导航控制器堆栈,然后使用- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated:替换当前的堆栈。

所以你可以做这样的事情

... 
UIViewController *vcToPush = ...; 
NSArray *newVCStack = @[[self.navigationController.viewControllers firstObject], vcToPush]; 
[self.navigationController setViewControllers:newVCStack animated:YES]; 

这个使用标准的推动画新的控制器将添加到堆栈(或不如果你选择),以及动画完成后,设置视图堆栈与数组的堆栈相同。

+0

因此,一旦我完成了上述工作,我会从当前视图开始继续到下一个要显示的视图吗? –

+0

我现在看到。 setViewControllers也实际显示它们,并将lastObject作为当前视图。谢谢!! –