大刘的 iOS 自学笔记

showViewController

2022-06-16  本文已影响0人  大刘

Created by 大刘 liuxing8807@126.com

iOS 8 引入了两种新的方式来显示一个视图控制器:

func showViewController(_ vc: UIViewController, sender sender: AnyObject?)
func showDetailViewController(_ vc: UIViewController, sender sender: AnyObject?)

这两个方法智能判断当前的显示环境来决定如何显示,iOS 8 想统一显示视图控制器的方式,不过引入这两个方法增加了使用的复杂性:

ViewController NavigationController TabBarController
showViewController:sender: Presentation Push Presentation(by self)
showDetailViewController:sender: Presentation Presentation(by self) Presentation(by self)

UINavigationController 重写了showViewController:sender:而执行 push 操作,上面的by self意思是用容器 VC 本身而非其下子 VC 去执行 presentation。这两个方法的行为可以通过重写来改变。

当非容器类 VC 内嵌在这两种容器 VC 里时,会通过最近的容器 VC 来执行:

VC in NavigationController VC in TabBarController
showViewController:sender: Push(by NavigationController) Presentation(by TabBarController)
showDetailViewController:sender: Presentation(by NavigationController) Presentation(by TabBarController)

Demo

上一篇下一篇

猜你喜欢

热点阅读