我有一个应用程序(带有UITabBarController),可以通过两个选项卡到达最终付款视图,每个选项卡都有自己的NavigationController。 (该图仅显示了相关的两个标签)
付款成功后,我想重置NavigationControllers并显示标签1。
如果我在标签1上,我可以使用此代码:
self.navigationController?.popToRootViewControllerAnimated(true)
但是,如果我在标签2上,只会将我带到选项卡2中的navigationController中的第一个viewController ...
如何在重置我所使用的NavigationController(和其他人)的同时提供另一个标签?
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
1)创建自定义UITabBarController
或创建一个类似于以下方法的类别:completePayment()
- (void) completePayment
{
[self setSelectedIndex:n] // n is the index of your destination tab
[[[self viewControllers] objectAtIndex:m] popToRootViewControllerAnimated: YES]; // reset the stack in the current tab
}
2)从ViewController触发此方法,即paymant是这样完成的:[self.tabbarController completePayment];
3)利润!
答案 1 :(得分:0)
有些方法可能会以某种方式做到这一点,但我建议你,当你问自己这样的问题时,你会重新考虑你的流程。每个UITab都旨在保存一个独立于其他UITab元素的UINavigationView
。如果您强制重置未使用的选项卡,则会破坏流程并使用户感到困惑。
因此,我建议您在应用中的任何位置推送您的Payment ViewController。并且不要乱用其他Tabs状态。