1 多个MVC交流

- 主要通过UITabBarController,UISplitViewController,UINavigationController

- 如何获得TabBarController,SplitViewController,NavigationController,事实上,每个UIViewController都有3个var,tabBarController,splitViewController,navigationController,
2 Segues

2.1 多种Segues
- Show Segues:在navigationController里使用,如果不在尽量不用
- Show Detail Segues:在splitViewController里使用
- Modal Segues:会使屏幕占满,用得很少,特定情况用
- Popover Segues:会弹出一个小框,背景变灰色无法交互
2.2 多种Segues
- Segues总会创建一个新的MVC实例
- NavigationController左上角的back按钮并不是一个Segues,点击会回到原来的MVC
2.3 Preparing for a Segue

- segue.identifier时segue的表示,在insepctor中可以设置以区分不同的segue
- segue.destination是一个UIViewController,需要向下转换成目标V
- 注意:【黄色代码发生在这个VC的outlet属性还未被设置之前,你不能强制解析这些outlet属性,否则会导致崩溃】
po xxx
- 在控制台输入po xxx 可以查看它的内容
2.4 用代码segue

-
首先在指定sender上创建@IBAction方法
用代码segue2
-
创建两个VC之间的Segues链接
3
-
给这个segue一个identifier
4
- 在@IBAction中调用performSegue(withIdentifier: , sender:)方法
2.5 希望保留数据时,不使用segues

-
用一个强指针指向splitViewController.last保存splitViewController中的主视图VC,通过直接修改VC的属性来完成改变视图,这样就不需要用Segues来创建新的实例导致原来VC数据丢失。
image.png
- 使用一个强指针指向VC,当它被弹出navigationController时,也不会被销毁,仍然储存在堆中,当再次进入这个VC时,会保留上次的数据。
3 Timer

-
Timer用weak修饰的好处,一旦没有强指针指向这个timer,它会被自动设置为nil
Timer
- 停止Timer
网友评论