iOS - 从另一个标签转到某个标签的第二个uiviewcontroller

时间:2012-09-24 07:45:54

标签: ios uiviewcontroller uinavigationcontroller uitabbarcontroller storyboard

我正在使用Storyboard开发iOS 5应用。

我有UITabBarController,其中有3个标签。每个标签都有自己的UINavigationController。第一个标签的UINavigationController有一个UITableViewController,它与另一个UIViewController相等。第二个标签的UINavigationController只有一个UIViewController

我希望实现的是在第二个标签的UIViewController中发生特定操作时导航到UINavigationController(第一个标签的UIViewController中的第二个视图)。

我尝试使用push segue完成此操作,但导航堆栈与不同选项卡的视图控制器混合(目标视图控制器中的后退按钮指向另一个选项卡的控制器)。

所以我想知道在不同标签的视图控制器之间完成这种转换的“正确方法”是什么。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您无法使用通知,因为第一个选项卡的第一个viewController甚至可能无法加载。

所以你可以做的一种方法是保存首选项(也许是nsuserdefaults),然后将标签切换到第一个标签,并在第一个标签的第一个viewController中检查viewDidAppear或viewWillAppear中的这个首选项,如果已设置则重置首选项(下次)并自动导航(推送)到第二个viewController。

BOOL shouldAutoPush=YES;
[[NSUserDefaults standardUserDefaults] shouldAutoPush forKey:@"shouldAutoPush"];
[[NSUserDefaults standardUserDefaults] synchronize]; 
[self.tabBarController setSelectedIndex:0];

-(void)viewWillAppear:(BOOL)animated {
     if ( [[NSUserDefaults standardUserDefaults] objectForKey:@"shouldAutoPush"] ) {
        BOOL shouldAutoPush=NO;
        [[NSUserDefaults standardUserDefaults] shouldAutoPush forKey:@"shouldAutoPush"];
        [[NSUserDefaults standardUserDefaults] synchronize]; 
        [self.navigationController pushViewController:secondViewController animated:YES];                
     }
}