视图控制器的出栈,入栈(页面切换)

1、导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器

2、我们要在栈中新增或者删除一个视图控制器,就需要得到导航控制器,一般在栈中得所有视图控制器都有一个self.navigationController,意思是我的导航控制器,也就是这个视图控制器所在的导航控制器,这样就拿到了导航控制器。

3、栈中新增视图控制器用pushViewController,其实就是push进去一个,这样对于用户而言就是打开一个新界面了。代码如下

- (IBAction)push:(id)sender {

    //storyBoard中拿到视图控制器

    UIStoryboard *storyboad = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

    AViewController *aViewController =  [storyboad instantiateViewControllerWithIdentifier:@"AViewController"];

    //导航控制器推送(入栈)

    [self.navigationController pushViewController:aViewController animated:YES];

   

}

 

4、栈中删除一个视图控制器用pop方法,pop方法由多种,代码如下

- (IBAction)pop:(id)sender {

    //出栈

    //当视图控制器出栈之后,此视图控制器的实例对象死亡,返回上一级视图控制器

    //[self.navigationController popViewControllerAnimated:YES];

    //返回根视图

    //[self.navigationController popToRootViewControllerAnimated:YES];

    //返回指定的视图控制器

    for (UIViewController*viewController in self.navigationController.viewControllers){

        //判断此实例对象是否是某个类型 (isKindOfClass)

        if ([viewController isKindOfClass:[AViewController class]]) {

           [self.navigationController popToViewController:viewController animated:YES];

        }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值