好的,我一直在跟着教程,我已经完成了,一切正常。然而,加载的初始视图是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:',期望'编码器:')
然后它要求我修复它'所以我这样做,将线路更改为:
window?.rootViewController = UIViewController(coder: ViewController())
但是现在这会引发错误:
无法转换类型' ViewController'的值预期参数类型' NSCoder'
我也尝试过:
window?.rootViewController = ViewController()
但有了这个,模拟器变黑了。
如何将我的应用中加载的第一个视图设为UIViewController类型?
答案 0 :(得分: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”。