程序化UI:不要调用super.loadView但是调用super.viewDidLoad?

hga*_*ale 3 uiviewcontroller ios

此问题适用于不使用nib文件的仅编程应用程序,其中已删除故事板并创建窗口并在应用程序委托中提供根视图.我在这里读到的一些可接受的答案似乎与Apple的文档有冲突,所以请告诉我这是否正确:

在创建a时UIViewController,应该放置创建其基础的方法loadView 而不调用super.loadView:

override func loadView() {

    // build something
    buildSomething()

}
Run Code Online (Sandbox Code Playgroud)

这使最后的润色的方法应该放在viewDidLoad 调用super.viewDidLoad:

// view did load
override func viewDidLoad() {
    super.viewDidLoad()

    // arrange something that requires it be built first
    arrangeSomething()

}
Run Code Online (Sandbox Code Playgroud)

或者super.viewDidLoad()只应在特殊情况下调用?如果是这样,他们是什么?

Rob*_*Rob 5

这是正确的,如果你实施,loadView你不应该打电话super.正如文件所说:

您不应调用此方法的自定义实现super.

但如果你实施viewDidLoad,你应该总是打电话super.