页面:以后 解决

Cell用nib,cell对应的类里面,不能有这个。

//    
//    
//    
//    
//    required init?(coder aDecoder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//    }
//    
//   

coder aDecoder: NSCoder 是storyboard中需要的初始化,历史遗留问题
你直接()创建的VC,参数为nil,那么你的viewController就没有view
直接跳转过去就是一个黑屏,而且是处于代码存在而storyboard里看不到的尴尬位置
自己写类,不重写父类UIViewController的designated init就会继承required init
如果你写了那个init(nibName...)这样的指定构造器,就必须重写所有的指定构造器,而且还要重写required init
所以自己写类不需要重写init,费力不讨好

这是NSCoding协议定义的,是必要构造器(Reguired),当没有定义任何指定构造器(Designated)的时候,父类的必要构造器会自动继承,但是如果我们在子类中定义的指定构造器,就要必须要实现必要构造器,而在子类中只定义了便利构造器(Convenience),则必要构造器会自动继承。
UIViewController 的那个无参的构造器是从 UIKit 里面迁移过来的,也就是说这个无参的构造器实际上就是 Objective-C 的 UIViewController 的无参构造方法,因为UIKit是OC写的,是Objective-C bridge过来的。
你说的convenience构造器可以调用init(string: String)但不能调用init?(coder aDecoder: NSCoder)吗?若是这样,那是应为init?(coder aDecoder: NSCoder)是可失败构造器,要么你把你的那个构造器也弄成可失败,要么直接用‘!’解开optional。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 构造方法是一个类创建对象最先也是必须调用的方法, 在OC中, 我们更习惯称这类方法为初始化方法. OC中的初始化方...
    至皓君阅读 16,065评论 3 14
  • 写在前面 这是我学习Swift3.0的学习笔记系列的第二篇文章,本篇同第一篇一样,将主要介绍Swift的一些基础语...
    Shaw1211阅读 5,890评论 0 51
  • 由一段对象序列化的代码,分析designated initializer 和 convenience initia...
    厨子阅读 9,890评论 0 3
  • 有时候,表达爱意的方式,仅仅是陪伴 1 漆黑的天空正倾泻着雨水,豆大的雨滴落在水坑砸出了大大的水泡。雨水迸溅的声音...
    四宝日记阅读 3,395评论 0 6
  • 熵(entropy)在统计学中是一个很重要的概念,用于特征的选择,衡量结果的不确定性, 信息熵越小, 结果越简单。...
    点点渔火阅读 14,879评论 2 2