美文网首页
斯坦福公开课Swift笔记7:Mutiple MVCs ,Tim

斯坦福公开课Swift笔记7:Mutiple MVCs ,Tim

作者: CyberDunk1997 | 来源:发表于2020-07-09 21:13 被阅读0次

1 多个MVC交流

Mutiple MVCs .png
  • 主要通过UITabBarController,UISplitViewController,UINavigationController
image.png
  • 如何获得TabBarController,SplitViewController,NavigationController,事实上,每个UIViewController都有3个var,tabBarController,splitViewController,navigationController,

2 Segues

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

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

2.4 用代码segue

用代码segue1
  1. 首先在指定sender上创建@IBAction方法


    用代码segue2
  2. 创建两个VC之间的Segues链接


    3
  3. 给这个segue一个identifier


    4
  4. 在@IBAction中调用performSegue(withIdentifier: , sender:)方法

2.5 希望保留数据时,不使用segues

image.png
  • 用一个强指针指向splitViewController.last保存splitViewController中的主视图VC,通过直接修改VC的属性来完成改变视图,这样就不需要用Segues来创建新的实例导致原来VC数据丢失。


    image.png
  • 使用一个强指针指向VC,当它被弹出navigationController时,也不会被销毁,仍然储存在堆中,当再次进入这个VC时,会保留上次的数据。

3 Timer

TImer
  • Timer用weak修饰的好处,一旦没有强指针指向这个timer,它会被自动设置为nil


    Timer
  • 停止Timer

相关文章

网友评论

      本文标题:斯坦福公开课Swift笔记7:Mutiple MVCs ,Tim

      本文链接:https://www.haomeiwen.com/subject/oohecktx.html