0

好的,我一直在关注一个教程,我已经完成了,一切正常。然而,加载的初始视图是一个 UITableViewController,我想要一个 UIViewController。

这是代码:

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
}

我试过编辑这一行:

UINavigationController(rootViewController: ViewController())

至:

window?.rootViewController = UIViewController(rootViewController: ViewController())

但是后来我收到了这个错误:

调用中的参数标签不正确(有 'rootViewController:',预期为 'coder:')

然后它要求我“修复它”,所以我这样做了,这会将行更改为:

window?.rootViewController = UIViewController(coder: ViewController())

但是现在这会引发错误:

无法将“ViewController”类型的值转换为预期的参数类型“NSCoder”

我也试过:

window?.rootViewController = ViewController()

但是,模拟器变黑了。

澄清问题:

如何让我的应用程序中加载的第一个视图为 UIViewController 类型?

4

1 回答 1

1

您应该继承UIViewController并制作自己的版本以检查它是否有效,但是您最初所做的很好

let myViewController = SomeViewController()
let navigationController = UINavigationController(rootViewController: myViewController)
window?.rootViewController = navigationController

然后在SomeViewController viewDidLoad集合view.backgroundColor = .red

如果要删除导航栏,可以将其设置为隐藏

navigationController.navigationBarHidden = true

或者...

let myViewController = SomeViewController()
window?.rootViewController = myViewController

也可以工作......虽然你应该寻找一般的导航控制器......它通常会使将来更容易呈现视图控制器......

你的模拟器变黑的原因是因为它工作......你显示的是一个空UIViewController......你必须创建自己的UIViewController子类并向它添加东西。

您的 View Controller 子类应如下所示

//
//  SomeViewController.swift
//  SomeProject
//
//  Created by Magoo on 17/10/2016.
//  Copyright © 2016 Magoo. All rights reserved.
//

import UIKit

class SomeViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()
        view.backgroundColor = .red

        let label = UILabel(frame:view.bounds)
        label.textColor = UIColor.whiteColor()
        label.text = "Hello world"

        view.addSubview(label)
    }
}

结果应该是一个红色的屏幕,中间写着“Hello world”。

于 2016-10-17T14:50:17.003 回答