美文网首页
Swift -ios - 在 ViewDidLoad方法之前

Swift -ios - 在 ViewDidLoad方法之前

作者: 清河湾 | 来源:发表于2017-08-08 14:34 被阅读421次

问题描述:
1.在ViewController 的xib 视图中 拖了控件, 也关联到了 VC.swift (ViewController.swift 以下简称VC) 中,但是,出现在viewDidLoad 方法中未打印出来的控件是nil (未初始化) ----- ios 8.3 系统 (测试机低版本系统只有这一个)
ios 10.3.3

ios 8.3 系统版本问题产生的BUG:
本人自己使用的手机和 模拟器的版本都是 iOS 10+ 的,未出现 这个问题

在使用 xib 创建 swift VC 时,需要加上这两句代码
一般这重写放在 基类 VC 里面



class BaseViewController: UIViewController{
//一般这重写放在 基类 VC 里面 
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: "\(type(of: self))", bundle: nil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
...
}

其中 "(type(of: self))" 是打印出本身的类名
打印的结果就是

print("\(type(of: self))")
// "BaseViewController"

其实就是重写 初始化nib 的方法 ,在OC 中想要显示
结合xib 的VC 的话, 需要写 initWithNibName: 的方法是一样的, 类比! 类比!

PeopleViewController *vc = [[PeopleViewController alloc] initWithNibName:@"nibName" bundle:[NSBundle mainBundle]];

总结:
1 .所有 swift 结合xib创建的 VC 必须加上 以上2句 代码
2 . "(type(of: self))" 是打印出本身的类名 ,但是type(of: ) 的用法未深究,待研究...

记录一下,如果哪里说错了,还请大牛指教,感激不尽.......

相关文章

网友评论

      本文标题:Swift -ios - 在 ViewDidLoad方法之前

      本文链接:https://www.haomeiwen.com/subject/wwutrxtx.html