1

我用下面的代码从我mainViewController传输到另一UIViewController transmiited的观点:我怎样才能像当前视图是从

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:otherUiViewController]; 
UIWindow *window = [UIApplication sharedApplication].keyWindow; 
[UIView transitionFromView:window.rootViewController.view 
        toView:navigationController.view 
        duration:1.2f 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       completion:^(BOOL finished){ 
        window.rootViewController = navigationController; 
       }]; 

otherUIViewController主要对象是用户输入一些输入并提交(但他们可能需要一些导航到其他页面也一样,这就是为什么我用UINavigationController用于显示otherUIViewController),当他们提交输入我想将它们传回给我的mainViewController(在UIViewController该用户从其发送)

问题是,传回用户的最佳方式是什么?有没有一种方法,我得到了原始mainViewController显示此UIViewController(otherViewController)并传回,或者我应该创建我的mainViewController的新实例,并再次使用上面的代码进行传输?

编辑,我忘了说 很重要的一点是,我希望该用户不能回mainViewController直到他们提交的输入

+0

更改'rootViewController'很少是个好主意。它往往有不必要的副作用。考虑让你的导航控制器成为'rootViewController',并让你的主视图控制器成为'topViewController'。现在,您可以将任何需要显示的视图控制器推送到导航堆栈上,并随时弹回顶部视图控制器。 –

+0

我希望该用户不能回到我的mainViewController,直到它提交输入 –

+1

您可以使用导航控制器作为'rootViewController'。只有在用户输入足够的数据后才启用后退按钮。或者,使用'presentViewController:animated:completion'来模拟地在'rootViewController'之上显示导航控制器。 –

回答

0

有实现这一两个很好的选择:

navigationController设置为rootViewController,将当前的主视图控制器设置为topViewController。将用户需要的视图控制器按入数据。确保禁用后退按钮,直到输入所有数据。

另一种选择是保持主视图控制器为rootViewController并使用`presentViewController:animated:completion:以模态方式显示导航控制器。

应该指出,更换rootViewController很少是一个好主意,因为它有不必要的副作用。

好编码!