最近项目中用到了一种用Manager类来管理跳转的方法,记录整理一下。
在iOS中通过系统自带的push操作,让控制器入栈,这样可以实现控制器一层一层的推进,这种情况下如果我们想要返回某个特定的控制器的时候,可以根据下标来获取navigationController.Viewcontrollers中相应的控制器,然后调用popToViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#>来达到跳转到特定控制器的目的,但是这样每次都需要比对入栈的控制器的顺序,并不是很方便。这个时候可以有下面两种方法解决这种情况:
第一种:用一个Manager类来管理跳转,在类里面写一个记录起始控制器的属性fromViewController,在子类里面写管理跳转的方法,每次调用跳转方法的时候,给这个属性赋值,在需要pop的地方,也通过这个类来实现跳转,因为在这个类里面可以拿到这个锚点控制器,在Manager类里面需要声明一个起始控制器
在子类中写各种控制跳转的方法,.h中方法声明
.m方法实现
|
|
如果需要做通过Manager类来控制POP操作,就在其实控制器中写一个控制返回的代理,在Manager里面实现该方法就行了
这样在用的时候,直接通过实例化Manager子类对象,然后调用相应的方法就可以了
还有一种方法是可以替换navigationController的viewControllers数组,通过- (void)setViewControllers:(NSArray