程序员iOS Developer

pop到没有实例化的控制器

2017-07-04  本文已影响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];
上一篇下一篇

猜你喜欢

热点阅读