我的需求类似百度云App那样可以给一个文件夹无限层级的创建子文件夹,最终这个文件夹下面有多少层子文件夹是由用户决定的。
最初我的理解是vc_A push至vc_B后,vc_A不能被释放,否则vc_B无法pop回vc_A,但是按这样理解就只能创建几十个vc预留给用户。但是弊端很明显,一是创建vc工作量太大,二是当push层级太多时,前面的vc占用内存太高。
后来通过测试,发现其实用两个vc来回跳转就能实现这个需求。
我是在UITableViewCell点击中实现的跳转
1
2
3
4
5
6
//ViewController A->B
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
SecondViewController * secondVC=[[SecondViewController alloc] init];
[self.navigationController pushViewController: secondVC animated:YES];
}
1
2
3
4
5
6
//ViewController B->A
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
FirstViewController * firstVC=[[FirstViewController alloc] init];
[self.navigationController pushViewController: firstVC animated:YES];
}
最后要注意处理rootViewController,否则两个vc来回跳转会造成rootViewController丢失,导致跳转动画效果丢失。
如果想偷懒,也可以调用激活动画的方法,跳转动画就不会丢失了。
1
2
3
4
5
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[UIView setAnimationsEnabled:YES];
}