iOS判断当前控制器是push还是present推出的

为了使代码更加完善,少不了if语句的使用。特别是封装的一些控件,为了使功能更加完善,各方面都要考虑。现在是这么一个场景:我从上个页面push或present过来,下个页面返回的按钮如何判断?

苹果工程师应该会想到这个问题,肯定能通过一个属性来判断,通过度娘,我找到了self.presentingViewController这个控制器的一个属性,点进去之后是这样的描述:

presentedViewController:// The view controller that was presented by this view controller or its nearest ancestor.(被本视图控制器present出来的的视图控制器)

presentingViewController:// The view controller that presented this view controller (or its farthest ancestor.) (present出来本视图控制器的视图控制器)

苹果工程师提供的属性

于是有了下面的解决方法,通过self.presentingViewController来判断present出来本视图的控制器是否存在

第一种判断方法

还有一种方法是通过self.navigationController.topViewController == self这种方法来判断,但是这种方法有一个局限:当present出的控制器添加了导航控制器,那么self.navigationController.topViewController == self这个是必走的,那么将导致控制器不走dismiss的方法。如果present出的控制器不带导航控制器这个方法也是可用的。

第二种判断方法
present出带有导航栏的控制器
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容