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

时间:2017-08-25 15:02:50

标签: ios uiviewcontroller

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

创建UIViewController时,创建其基础的方法应放在loadView 中,而无需调用super.loadView

override func loadView() {

    // build something
    buildSomething()

}

进行最后修改的方法应放在viewDidLoad 调用super.viewDidLoad

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

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

}

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

1 个答案:

答案 0 :(得分:5)

这是正确的,如果您实施loadView,则不应致电super。正如the documentation所说:

  

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

但如果您实施viewDidLoad,则应始终致电super