为了使代码更加完善,少不了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出的控制器不带导航控制器这个方法也是可用的。