美文网首页程序员iOS Developer
pop到没有实例化的控制器

pop到没有实例化的控制器

作者: 优米诺 | 来源:发表于2017-07-04 11:42 被阅读29次

    在平常的开发中可能会遇到一些不太平常的需求,比方说我的就是从首页A控制器 push到C控制器,然后需要从C返回B,然后B再返回的话可以返回首页A

    乍一看这需求好像不太符合常理,但是有些场景下还是比较合理的,就比方我这个

    直接上代码吧

    // 这是 UINavigationController 中的属性
    @property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;  // The current view controller stack.
    // 首先导航控制器其实是一个压栈和出栈的过程,在 A push 到 C 后 viewControllers 数组中只有 A 和 C,想要 pop 到 B 的话 viewControllers 中必须要有 B 才行;
    
    // 既然这样我们直接把 B 添加到数组中试一试吧
    // viewControllers 是一个不可变数组
    NSMutableArray *temp = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
    
    viewControllerB *VCB = [[viewControllerB alloc] init];
    
    [temp insertObject: VCB atIndex: temp - 1];
    
    // 此时 temp 数组中存在 A -->B -->C 三个控制器,在 C 中直接 pop 即可
    
    [self.navigationController setViewControllers: temp animated:YES];
    
    [self.navigationController popViewControllerAnimated:YES];
    

    相关文章

      网友评论

        本文标题:pop到没有实例化的控制器

        本文链接:https://www.haomeiwen.com/subject/lgithxtx.html