segues
下面是4种类型segue

更改viewController名称:
1.更改这个控制的文件名
2.更改这个控制器文件里面的类名
3.更改这个控制器在SB中关联的控制器的类名
AutoShrink:
UILabel根据屏幕大小来自动调整文字大小

prepare for segue:

在准备跳转segue的时候,这个目标控制器的outlets还没有被设定。所以有一些准备工作必须等到这些outlets被设定之后,才能执行。例如下面这个例子:

在prepare执行segue的时候,给destinationVC的属性hapiness赋值,然而这个属性有一个观察者,使得destinationVC会去让它的faceview这个对象重绘;但是此时由于faceView是一个outlet,此时它还没有被加载进来,所以faceview为nil。因此xcode报错。
解决办法:

在faceView后面加上?,表示当faceView为nil时候,不执行后面的代码。
经验:如果有一个属性(faceView),是在准备的时候调用(在hapiness这个model初始化的时候),就应该用可选链来检查它。
控制器的title:
控制器的title属性,就是它在navigationController里面时,它顶部的title。
navigationController的visibleController属性:
指的是navigationController的里面当前最上面看得见的那个viewController。
网友评论