showViewController

作者: 大刘 | 来源:发表于2022-06-16 12:27 被阅读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

相关文章

网友评论

    本文标题:showViewController

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