NavigationController流程

NavigationController流程

我的应用程序中有一个Tabbar控制器作为主屏幕。一些选项卡嵌入了导航控制器。

这是我的问题:
应用启动时,第一个标签是初始标签。在某些情况下,用户应在应用启动后立即看到第二个屏幕B(在导航堆栈中)(有performSegue会在第一个屏幕的viewWillAppear中触发)。这可以正常工作。用户启动该应用程序,并立即看到第二个屏幕。当用户切换到其他选项卡并返回时,这也适用。问题是当用户已经在第一个选项卡上并再次点击它时。然后堆栈被破坏,用户将看到第一个屏幕A,该屏幕将在短时间内动画成第二个屏幕B。用户可以清楚地看到此过渡。

First tab --> screen A --> screen B --> ...
|
Second tab --> screen T --> screen U --> ...
|
...


那么问题是如何防止这种行为?在这种情况下,用户不应看到A和B之间的过渡。

谢谢

最佳答案

这是UITabBarController的预期行为,它将导航控制器弹出到其堆栈中的第一个视图控制器。

如果您不希望在用户点击选项卡栏项时在某些情况下出现屏幕A,只需从导航堆栈中删除第一个视图控制器,然后将其从A推到B(在viewDidLoad中的表单实例)中进行如下操作: B视图控制器):

NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
[allViewControllers removeObjectAtIndex: 0];
navigationController.viewControllers = allViewControllers;


这样,屏幕B将成为您所需的导航堆栈的根视图控制器。

关于ios - Tab + NavigationController流程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29729450/

10-11 00:49