ios - 以编程方式设置 root VC

标签 ios swift appdelegate

我是 Swift 初学者,请放轻松。我会在我的问题中具体说明。

我删除了 Storyboard(我想学习如何使用 Swift 以编程方式构建 UI)。

下面的代码放在 AppDelegate.swift 中

我在项目浏览器中也有 ViewController.swift。

首先,有没有办法使用除 UINavigationController 以外的任何东西......?或者有一个 UINavigationController 是必须的要求..?

如果不是必须的,我怎样才能将它引用到 ScrollView 之类的例子......?

第二,随着对 Apple 自己的指南的进一步研究,他们说我也可以使用 window?.isHidden = false...使用前一行和 window 之间有区别吗?.makeKeyAndVisible()..?

很抱歉,如果我的问题在编程上没有意义,就像我说的,我是初学者,但我决心理解为什么我要编写我编写或复制的代码。 谢谢。

class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.makeKeyAndVisible()
        window?.rootViewController = UINavigationController (rootViewController: ViewController())

        return true
    }

...

}

最佳答案

  1. 一个窗口需要一个 View Controller 。它不一定是 UINavigation Controller ,但它确实需要是 View Controller 。并非所有应用程序都以导航 Controller 开头。事实上,您可以通过查看 Xcode 在新项目中为您提供的 Storyboard 自己看到这一点。它只是一个 ViewController。您可以改用 ScrollView 吗?如果您将 ScrollView (它是一个 UIView)放入 UIViewController,当然可以。

  2. 隐藏窗口只是让它出现和消失。使其成为关键窗口意味着它将成为接收事件的窗口。你可能认为它在 iOS 应用程序中并不重要,但 iOS 应用程序可以有多个窗口。在启动应用程序的情况下,最好定义可见的窗口并作为关键窗口,而不仅仅是可见的窗口。

关于ios - 以编程方式设置 root VC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745163/

相关文章:

ios - frame.size.width 和 frame.width 的区别

ios - 如何在 Swift 3 的 UIPickerView 中获取所选行的字符串值?

ios - 使用 AppDelegate 中的 Reachibility block 检查整个应用程序的连接性

ios - Apple 远程推送通知在沙盒和生产模式下的行为似乎有所不同

iphone - 首次启动应用程序后更改初始 View Controller

ios - Swift 比较字符串可选与非可选

ios - 错误 MT1006 容器创建失败

php - 我如何将数据从我的 ios 应用程序上传到我的 sql 数据库?

ios - 检索数据后如何实例化?

ios - Swift 3 - 如何在 moveRowAt IndexPath 之前触发 textFieldDidEndEditing?