CS193P 7. Multiple MVCs

1. Split View Controllers & Navigation Controllers & Tab Bar Controllers

Slide 中图太多就不一一贴在这里了

UINavigationController 比喻成一堆卡片,只能看到一张卡片。新的 MVC 出来,旧的就被丢弃。

2. Segues

Segue 总是引导到一个新建的 MVC,旧的同样被丢弃。

Storyboard 总是通过名字连接代码的:UIView 的 Class、View Controller 的 Class、Outlet 的名字、IBAction 的名字,这是一种松散耦合,能够这个两件东西连接起来。

3. Demo: Psychologist

最好的理解就是做实践(Demo)。

我们将会新建一个 Psychologist MVC

Psychologist 将会披露他的诊断,通过 segue Happiness MVC。

我们会把 MVCs 放进 navigation controllers 内部 split view controllers,它将兼容 iPad 和 iPhone 设备。

Autolayout 另一个技巧是使用 Reset to Suggested Constraints,配合 Size Inspector 面板里 Descendant Constraints。

4. Popovers

Popover 对应的是 popoverPresentationController

由于 Popover 出来的 MVC 每次的新建的,History 相关信息可以存储到 NSUserDefaults 中。

iPad 是小的弹窗,iPhone 默认 Modal,可以改回 Popover。

可以UIPopoverPresentationControllerDelegate协议,重写 UIViewController 中的 preferredContentSize 自定义大小。

源码保存在我的 GitHub: CS193P-2015