问题描述:
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: ) 的用法未深究,待研究...
记录一下,如果哪里说错了,还请大牛指教,感激不尽.......
网友评论