navigationController在任意界面pop到根控制器

主要用到两个方法:

- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated;

次要方法

- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated; 

@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;

首先获取导航控制器所有控制器的数组转换成可变数组,其次当前控制器是在导航控制器中,

当前A控制器push其B控制器后,

在把B控制器插入到前面位置,

再把A控制器从获取的控制器数组中清除;

然后替换导航控制的viewControllers。

UIViewController *rootVc = [UIViewController new];

    UIViewController *A = [UIViewController new];

    [rootVc.navigationController pushViewController:A animated:YES];

    UIViewController *B = [UIViewController new];


    NSMutableArray *viewControllerArr = [NSMutableArray arrayWithArray:A.navigationController.viewControllers];

    [A.navigationController pushViewController:B animated:YES];

    [viewControllerArrinsertObject:BatIndex:viewControllerArr.count-1];

    [viewControllerArrremoveObject:A];

    [A.navigationControllersetViewControllers:viewControllerArr];

主要难点你要记住你push控制器要插入数组index。理解之后任意地方都可以返回根控制器。

你可能感兴趣的:(navigationController在任意界面pop到根控制器)