您的位置:首页 > 移动开发 > IOS开发

iOS有关pop到self.navigationController.viewControllers以外的界面

2017-05-19 14:34 633 查看
今天在编写项目时,遇到一个难题,就是pop出栈的问题,现在的场景是这样:如图 ↓ ,而遇到的问题则是当返回到商品详情/订单详情是,固定死的返回到对应额商品包/订单列表页面,那么,如果是从商品包点击push压栈到支付成功页面,那么点击完成是要跳到订单详情页面,而在订单详情页面中点击左上角的返回要返回至订单列表,那么,用之前发表过的pop出栈,则不可用了,因为从我的首页到购买成功,压栈的栈数组中,并没有包含订单详情页面,也就是说此类问题就是pop到界面栈数组以外的界面中去,如何实现。

    遇到这种问题,因为考虑到都是从我的首页进入,那么只需要在订单列表和商品包中的返回方法里面实现返回到栈底就好了。

[self.navigationController popToRootViewControllerAnimated:YES];
问题的重点就在于,如何在详情中实现返回至商品包页面/订单列表页面

以下是我的设计想法

#pragma mark -- 返回按钮点击
- (void)theBackBtnClick:(UIButton*)sender

{

NSArray* viewArr = self.navigationController.viewControllers;
if(viewArr[1] == [YGMyOrderVCViewController class]){
//说明是从我的订单里面进来的则返回至上层
[self.navigationController popViewControllerAnimated:YES];
}else{
//是从其他地方进入到商品详情,此时也要返回到我的订单里面,但是不管从哪里进来的,都是从我的首页进来的,因此栈顶肯定为我的首页
NSMutableArray *pageArray = [self.navigationController.viewControllers mutableCopy];
YGMyOrderVCViewController *insert = [[YGMyOrderVCViewController alloc] init];
//插入界面栈
[pageArray insertObject:insert atIndex: 1];
[self.navigationController setViewControllers:pageArray animated:NO];

insert.hidesBottomBarWhenPushed = YES;
[self.navigationController popToViewController:insert animated:YES];

}

}

这样就可以解决问题。

有更好见解的,欢迎来探讨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息