UIView上的控件使用push方法跳转

时间:2022-08-27 10:18:14

有时候在项目中,为了保持前后页面的推进方式跳转方式一致,会在通过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所在的位置来实现。如果哪位兄弟有更好的方法,可以交流下。多谢。。。。