切换控制器
模态
任何控制器都能通过modal的形式展示出来
新的控制器从屏幕底部往上钻
-
弹出的控制器和之前的控制器没有太大联系的时候
- 应用场景:注册某个app
presentViewController:animated:completion:^{}
dismissViewControllerAnimated:completion:
modal
modal不仅可以在modal出来的控制器里dismiss,还可以在当前控制器里dismiss掉
-
问题一:modal出来的控制器要不要强引用?
- 要强引用
- 由当前的presentedViewController强引用
-
问题二:modal出来的控制器的view,是添加到哪里的?
- modal出来的控制器是添加到窗口上的
-
模拟一个modal效果
- view添加到窗口(keyWindow)上面
- [UIApplication sharedApplication].keyWindow
- 修改y值,为屏幕宽度
- 取出frame(三步)
- 临时frame存
- 改临时的frame的y
- 把临时的frame赋值给控制器view的frame
- 取出frame(三步)
- 添加动画
- modal出来的控制器的view被window强引用
- modal出来的控制器没有强引用
-
注意
:如果控制器被销毁,那么它里面的业务逻辑是没有办法处理的 - 解决:设置控制器属性,给控制器属性赋值
-
- view添加到窗口(keyWindow)上面