【问题标题】:iOS Swift window.rootViewController vs presentViewControlleriOS Swift window.rootViewController 与 presentViewController
【发布时间】:2015-07-01 14:30:45
【问题描述】:

在多个视图之间切换的最佳做法是什么;更改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,但我说的对吗?

【问题讨论】:

    标签: ios swift uiviewcontroller presentviewcontroller


    【解决方案1】:

    我的建议是,您只需覆盖 rootviewController,其余的事情由您的应用处理。

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

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

    【讨论】:

      【解决方案2】:

      “rootViewController”的重点是所有视图的中心枢纽。

      将其视为一系列链中最顶层的链接。例如左侧的视图,可以与右侧的视图对话 可以与中间的视图对话,这要归功于“rootViewController”。 “公共链接”.. 最重要的是,它控制(或有能力控制)左侧、右侧和中间的假设视图的配置方式等...

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

      我刚刚注意到这里 (Changing root view controller of a iOS Window) 上的一篇很棒的帖子,同时找到了一张体面的图片来体面地解释它。

      感谢 Matt 在那篇文章中:) 希望这会有所帮助。

      如果不能随意问:)

      编辑并供其他人参考,这里有一些便宜又快速的东西,我拼凑在一起,可能会让你的头被故事板缠住:)

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

      干杯,

      一个

      【讨论】:

      • 我什么都不懂,当我使用 presentViewController 时,它是一个模式视图,那么有没有一种简单的方法可以关闭这个视图并查看我的根视图?
      • 查看我对帖子所做的编辑,那里有一个示例项目可供您使用...
      • 好的,但就我而言,我不想使用导航控制器,谢谢分享代码
      • 没问题。导航控制器只是一个例子,但是一旦你掌握了它,其余控制器几乎都遵循相同的原则
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-16
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多