您的位置:首页 > 移动开发 > Swift

swift项目在iOS8 通过init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle

2017-07-06 16:46 567 查看
 

初始化代码:
MatchViewControllerPhone(nibName:"MatchViewControllerPhone", bundle: nil)
 
MatchViewControllerPhone类部分代码:
class MatchViewControllerPhone: UIViewController 
    @IBOutlet weak var container: UIScrollView!
 // MARK: - Life cycle
    override func viewDidLoad() {
        super.viewDidLoad()
         self.container.delegate = self   //在iOS8设备上报错:fatal error: unexpectedly found nil while unwrapping an Optional value
    }
 
}
 
查看发现xib里的子控件都为nil导致的。
 
后来发现init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)中nibNameOrNil参数在iOS8中为空,所有有以下解决方案:
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        let classString = String(describing: type(of: self))
        super.init(nibName: nibNameOrNil ?? classString, bundle: nibBundleOrNil)
    }
 
ps:
1、在iOS9iOS10设备上是好的,估计被苹果修复了
2、在storyboard中也是好的,所以xib换成storyboard也是可以解决的。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: