每天一点Swift(三)容器控制器及segue

segues

下面是4种类型segue

更改viewController名称:

1.更改这个控制的文件名

2.更改这个控制器文件里面的类名

3.更改这个控制器在SB中关联的控制器的类名

AutoShrink:

UILabel根据屏幕大小来自动调整文字大小

prepare for segue:

每天一点Swift(三)容器控制器及segue_第1张图片

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

每天一点Swift(三)容器控制器及segue_第2张图片

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

解决办法:

每天一点Swift(三)容器控制器及segue_第3张图片

在faceView后面加上?,表示当faceView为nil时候,不执行后面的代码。

经验:如果有一个属性(faceView),是在准备的时候调用(在hapiness这个model初始化的时候),就应该用可选链来检查它。


控制器的title:

控制器的title属性,就是它在navigationController里面时,它顶部的title。

navigationController的visibleController属性:

指的是navigationController的里面当前最上面看得见的那个viewController。

你可能感兴趣的:(每天一点Swift(三)容器控制器及segue)