重置当前NavigationController并显示另一个选项卡

时间:2016-02-17 15:59:02

标签: ios swift

我有一个应用程序(带有UITabBarController),可以通过两个选项卡到达最终付款视图,每个选项卡都有自己的NavigationController。 (该图仅显示了相关的两个标签)

付款成功后,我想重置NavigationControllers并显示标签1。

如果我在标签1上,我可以使用此代码:

self.navigationController?.popToRootViewControllerAnimated(true)

但是,如果我在标签2上,只会将我带到选项卡2中的navigationController中的第一个viewController ...

如何在重置我所使用的NavigationController(和其他人)的同时提供另一个标签?

非常感谢任何帮助。谢谢!

enter image description here

2 个答案:

答案 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状态。