首页 实现视图控制器的无限次跳转
文章
取消

实现视图控制器的无限次跳转

我的需求类似百度云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];
}
本文由作者按照 CC BY 4.0 进行授权

统一管理同一视图控制器中的多个UITextField键盘

GPS纠偏/地图获得GCJ-02坐标