【OC】关于强制移除出栈

来源:互联网 发布:centos 任务管理器 编辑:程序博客网 时间:2024/05/21 17:21

有的时候一个控制器做为过渡使用,用过之后 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];}