Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-从另一个选项卡转到某个选项卡的第二个uiviewcontroller_Ios_Uiviewcontroller_Uinavigationcontroller_Uitabbarcontroller_Storyboard - Fatal编程技术网

iOS-从另一个选项卡转到某个选项卡的第二个uiviewcontroller

iOS-从另一个选项卡转到某个选项卡的第二个uiviewcontroller,ios,uiviewcontroller,uinavigationcontroller,uitabbarcontroller,storyboard,Ios,Uiviewcontroller,Uinavigationcontroller,Uitabbarcontroller,Storyboard,我正在用故事板开发一个iOS5应用程序 我有UITabBarController,它有3个选项卡。每个选项卡都有自己的UINavigationControllerUINavigationController有一个UITableViewController,它可以连接到另一个UIViewController等。第二个选项卡的UINavigationController只有一个UIViewController 我想要实现的是,当第二个选项卡的UIViewController中发生某些操作时,导航到U

我正在用故事板开发一个iOS5应用程序

我有
UITabBarController
,它有3个选项卡。每个选项卡都有自己的
UINavigationController
<第一个选项卡的code>UINavigationController有一个
UITableViewController
,它可以连接到另一个
UIViewController
等。第二个选项卡的
UINavigationController
只有一个
UIViewController

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

我曾尝试使用push segue来实现这一点,但是导航堆栈与不同选项卡的视图控制器混合在一起(目标视图控制器中的“后退”按钮指向另一个选项卡的视图控制器)

所以我想知道在不同选项卡的视图控制器之间实现这种转换的“正确方法”是什么


非常感谢您的帮助。

您不能使用通知,因为第一个选项卡的第一个viewController甚至可能没有加载

因此,一种方法是保存首选项(可能是nsuserdefaults),然后将选项卡切换到第一个选项卡,在第一个选项卡的第一个viewController中,在ViewDidDisplay或ViewWillDisplay中检查此首选项,如果已设置,则重置首选项(下次)并自动导航(推送)到第二个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];                
     }
}

伟大的它解决了我的问题,非常感谢!我还有一个问题。。我应该如何使用这种方法在目标视图控制器中设置一些数据。我的观点是,在用户默认设置中保存自定义对象不是一个好主意。或者我错了吗?如果您有一个单独的数据模型类,您可以在那里设置一个或多个属性?或者,如果是一个简单的应用程序,可以将数据存储在appDelegate中。事实上,您也可以将上述首选项存储在其中任何一个中,以避免nsuserdefaults.ok。我可能会使用一些单例类来存储我的自定义对象。谢谢你的帮助!