博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift - IBOutlet返回nil(fatal error: unexpectedly found nil while unwrapping an Optional value)
阅读量:6888 次
发布时间:2019-06-27

本文共 1090 字,大约阅读时间需要 3 分钟。

在Swift ViewController 默认构造方法不关联同名的xib文件

在使用OC的时候,调用ViewController的默认构造函数,会自动关联到一个与ViewController名字相同的xib文件上,

这样无疑方便了开发者,减少了代码量。但不知道为什么,在swift中,新建ViewController实例,不在默认关联xib

一定要开发者指定xib的名字,这对于有代码洁癖的人是不可接受的,因为通常情况下,

xib的名字一定是和ViewController的名字相同的。 

// Objective C中的写法TwoViewController *v = [[TwoViewController alloc] init]; //这样会把TwoViewController默认关联到TwoViewController.xib上// 等同调用了方法TwoViewController *v = [[TwoViewController alloc] initWithNibName:@"TwoViewController" bundle:nil];// Swift中的写法let v = TwoViewController() //不会关联TwoViewController.xib文件// 一定要指定xib文件let v = TwoViewController(nibName: "TwoViewController", bundle: nil)// 我们改怎样让TwoViewController()去找同名字的xib文件呢,// 其实原来很简单,重写init方法就行了, // 新建BaseViewController.swift 重写init方法,// 其他的ViewController继续于BaseViewController。override init() {    // 获取当前Class的名字,在swift中class名字前会加入Module名字,所以这里以'.'划分,取'.'后面的字符串.    super.init(nibName: (self.classForCoder.description() as NSString).componentsSeparatedByString(".")[1] as NSString, bundle: NSBundle.mainBundle())}required init(coder aDecoder: NSCoder) {    super.init(coder: aDecoder)}

  

转载地址:http://prtbl.baihongyu.com/

你可能感兴趣的文章
C#枚举
查看>>
浅谈MVC、MVP、MVVM架构模式的区别和联系
查看>>
struts自己定义拦截器--登录权限控制
查看>>
P2668 斗地主 贪心+深搜
查看>>
Java Swing设置主窗体位置居中方法
查看>>
Android -- 面试 -- 数据库升级策略
查看>>
基于openresty 的几个开发框架
查看>>
高精度2--减法
查看>>
图片或文章防盗链
查看>>
[PReact] Integrate Redux with Preact
查看>>
cocos2dx 触摸钢琴
查看>>
POJ 2019 Cornfields 二维线段树的初始化与最值查询
查看>>
P1133 教主的花园
查看>>
web站点和windows服务项目发布时如何排除指定文件
查看>>
九度 1138 - 大数除余 - 进制转换
查看>>
Sql Server中集合的操作(并集、差集、交集)学习
查看>>
Linux文字分段裁剪命令cut(转)
查看>>
linux下mysql的root密码忘记解决方
查看>>
onClickRow 事件
查看>>
学习图像算法阶段性总结 (附一键修图Demo)
查看>>