【OC】关于强制移除出栈

有的时候一个控制器做为过渡使用,用过之后 push 到下一个页面则不再使用此控制器,如 A -> B -> C, B 是过渡使用的,push 到 C 后即需要将 B 移除出导航栈,以达到可以从 C 直接返回到 A 的目的,其实现依赖 UINavigatioinController 的 setViewControllers: 属性,其实现和使用如下:

/// 使用分类实现,将自身移除出导航栈
@implementation UIViewController (RemoveFromNavigationStack)
- (void)br_removeFromNavigationControllerStack {
    NSMutableArray *newArray = [self.navigationController.viewControllers mutableCopy];
    [newArray removeObject:self];
    [self.navigationController setViewControllers:newArray animated:YES];
}
@end

/// B 控制器的实际调用场景
- (void)clickToPushToControllerC:(id)sender {
        ControllerC *vc = [[ControllerC alloc] init];
        [self.navigationController pushToViewController:vc animated:YES];
        [self br_removeFromNavigationControllerStack];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值