1

我正在使用Storyboard开发iOS 5应用程序。iOS - 转到另一个选项卡的某个选项卡的第二个uiviewcontroller

我有UITabBarController它有3个选项卡。每个标签都有自己的UINavigationController。第一个选项卡的UINavigationController具有一个UITableViewController其中塞格斯到另一个UIViewControllerUINavigationController第二选项卡的仅具有一个UIViewController

当第二个选项卡的UIViewController发生某些操作时,我想实现的目标是导航到UIViewController(第一个标签的UINavigationController中的第二个视图)。

我试图实现这一点使用推赛格瑞但随后的导航堆栈变为与视图不同的选项卡的控制器(在目的地视图控制器点后退按钮来查看其它选项卡的控制器)混合。

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

任何帮助将不胜感激。

回答

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];     
    } 
} 
+0

太好了!它解决了我的问题,非常感谢!我还有一个问题。我应该如何使用这种方法在目标视图控制器中设置一些数据。我的意见是,保存自定义对象的用户默认不是一个好主意。或者我错了? – damirstuhec

+0

如果您的数据有单独的模型类,您可以在其中设置一个或多个属性?或者如果一个简单的应用程序,可能会将数据存储在appDelegate中。实际上,您也可以将上述首选项存储在其中任一个中以避免nsuserdefaults。 – ader

+0

好的。我可能会使用一些单例类来存储我的自定义对象。感谢帮助! – damirstuhec

相关问题