您好,欢迎访问一九零五行业门户网

popViewController 之 同时pop掉2层viewController

项目中有注册和修改密码功能,一旦注册成功就需要跳转到成功的界面,然后成功界面会有相应返回按钮事件,这时候我就需要直接返回我的上上层视图了 开始我用的block,可是这种已经不能满足我的要求了, (下面功能虽然没有实现,但是可以理解block的简单使用了
项目中有注册和修改密码功能,一旦注册成功就需要跳转到成功的界面,然后成功界面会有相应返回按钮事件,这时候我就需要直接返回我的上上层视图了
开始我用的block,可是这种已经不能满足我的要求了,
(下面功能虽然没有实现,但是可以理解block的简单使用了)
要求:我有3个视图
视图1为登录界面
视图2为注册界面
视图3为提示成功界面
视图2已经push到了视图1上,接下来就要在视图2里写block了,代码如下
viewcontroller2 . h
@property (nonatomic,copy) void (^callback)(void);//我的block对象
viewcontroller2 . m
uistoryboard *sb=[uistoryboard storyboardwithname:@main_iphone bundle:nil];
              viewcontroller3  *vc3=(viewcontroller3 *)[sb instantiateviewcontrollerwithidentifier:@viewcontroller3];
              /*以上2行是我加载故事版中的视图3*/
vc3.phonenumber=self.phonenum.text;//在故事版中如果2个视图之间相互传值,可以采用以上3行代码的形式来传递
void (^myblock)(void)=^{
                    [self.navigationcontroller popviewcontrolleranimated:yes];
};
[vc3 setcallback:myblock];//将我的block赋给视图3
                [self.navigationcontroller pushviewcontroller:vc3  animated:yes];
以下代码为视图3里面的
viewcontroller3 . h
@property (nonatomic,copy) void (^callback)(void);
viewcontroller3 . m
if (self.callback) {
                self.callback();
            }
            [self.navigationcontroller popviewcontrolleranimated:yes];
现在来看看我是如何实现的吧(简称面包屑用法)
【这种用法可以让你指定到你想返回的视图中去】根据上述功能,我将此段代码放在了视图3中
            nsarray *pushvcary=[self.navigationcontroller viewcontrollers];
//下面的pushvcary.count-3 是让我回到视图1中去
uiviewcontroller *popvc=[pushvcary objectatindex:pushvcary.count-3];
[self.navigationcontroller poptoviewcontroller:popvc animated:yes];
希望对大家有所帮助,讲解的不是太好,大家可以在下方留言给我
其它类似信息

推荐信息