有时候在项目中,为了保持前后页面的推进方式跳转方式一致,会在通过UIview上的控件跳到另一个Controller上,所以,这时候就需要用到这种方式了,当然,present方法可以实现跳转但是样式可能不同,这时候在我的想法可以使用代理或者回调,当你不熟悉时,就用到了这个方法:
1.参考别人的方法: http://gekie.iteye.com/blog/1133460
2.使用响应者链的方法。。。
1> 假定你的项目中有文件 UIViewContronllerA, UIViewContronllerB,UIView;我们的UIview是UIViewContronllerA中封装的一个view,并且,我们需要通过UIview上的一个事件来跳转到UIViewContronllerB(跳转方法在UIview页面中)
2>首先,我们在UIView.h页面声明一个属性 @property (nonatomic,strong) UIViewController *owner;
然后,在UIView.m页面的需要跳转的事件里面调用跳转方法: [self.owner.navigationController pushViewController:[UIViewContronller2 new] animated:YES];
3>最后,别忘了,在UIViewContronllerA控制器中调用这个UIVIew:
UIView *view = [[UIView alloc] init];
view.owner = self;
OK!这样你就能实现在view上面跳转了。。。。
在之后又遇到了这个问题,但是上述方法已经实现不了了,然后就查了一些资料,使用了另外的一种方法实现!
我们知道,在页面的跳转过程,实际上就是一种页面vc的堆栈,我们把这个跳转过程看做入栈,那么如果我们要跳过中间过程,返回某一个页面,而我们的push等方法也不符合实际需求时,这时我们就可以用 栈 的原理来实现。。。取出某一个VC,来跳转,方法如下:
MyVehicleViewController *MVVC = (MyVehicleViewController *)[[self.navigationController viewControllers] objectAtIndex:self.navigationController.viewControllers.count-2];
对于这种用法,最常见的就是用作拍照上传了。我们先取出所有的VCs,然后找到自己想要跳转到的VC所在的位置来实现。如果哪位兄弟有更好的方法,可以交流下。多谢。。。。