iOS Swift window.rootViewController vs presentViewController

时间:2015-07-01 14:30:46

标签: ios swift uiviewcontroller presentviewcontroller

在多个视图之间切换的最佳做法是什么;更改rootViewController或使用模态视图?

设置rootviewController

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
var window :UIWindow = UIApplication.sharedApplication().keyWindow!
window.rootViewController = vc;
window.makeKeyAndVisible()

更改模态视图:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
self.presentViewController(initViewController,animated: false, nil)

当我需要向用户展示其他视图时,我很困惑。

p.s。就我而言,我的应用程序以登录表单作为rootViewController开头。登录后,我认为最好更改rootViewController,但我是对的吗?

3 个答案:

答案 0 :(得分:4)

我的建议是,不要费心去做,你只需要覆盖rootviewController其余部分由你的应用程序处理。

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
    self.window?.rootViewController? = initViewController

在这段代码中,我们只是从AppDelegate覆盖了rootview控制器。

答案 1 :(得分:2)

" rootViewController"是你所有观点的中心枢纽。

将其视为系列链中最顶级的链接。例如左边的视图,可以通过" rootViewController"来与右边的视图对话,可以在中间与视图对话。 "常用链接" ..最重要的是,它控制(或具有控制能力)如何配置左,右和中间的假设视图等...

很好,我有点琐碎,但(UINavigationController)专门用于分层内容,即UITabViewController是一个很好的例子..

我在这里发现了一篇很棒的帖子(Changing root view controller of a iOS Window),同时找到了一个体面的形象来解释它。

在该帖子上感谢Matt :)希望这会有所帮助。

如果没有随意提出要求:)

编辑以供其他人参考,这里有一些便宜而且快速的东西,我可能会把你的脑袋缠在故事板上:)

https://dl.dropboxusercontent.com/u/61211034/viewFun.zip

干杯,

A

答案 2 :(得分:1)

应用程序窗口的根视图控制器是启动屏幕后加载到窗口中的第一个视图。尽管可以切换窗口的视图控制器来更改视图,但可以考虑使用UINavigationController并将其他视图控制器推送到视图堆栈。这为用户提供了更大的灵活性,允许用户在视图之间来回切换。