欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

[iOS开发] present 和 push

程序员文章站 2022-04-12 22:07:37
一、基本概念共同点– present和push方法都可用于推出新的界面。 present和dismiss对应使用,push和pop对应使用。不同点– present弹出的视图是模态视图(我对模态视图的理解大概就是一个临时视图);push由视图栈控制,每一个视图都入栈,调用之前的视图则需要出栈– present只能逐级返回;push可返回任意一层二、使用方法用UINavigationController的时候使用pushViewController:animated----返回之前的视图[...

一、基本概念

共同点
– present和push方法都可用于推出新的界面。 present和dismiss对应使用,push和pop对应使用。

不同点
– present弹出的视图是模态视图(我对模态视图的理解大概就是一个临时视图);push由视图栈控制,每一个视图都入栈,调用之前的视图则需要出栈
– present只能逐级返回;push可返回任意一层

二、使用方法

  1. 用UINavigationController的时候使用pushViewController:animated
    ----返回之前的视图[[self navigationController] popViewControllerAnimated:YES];
    —ps:push以后会在navigation的left bar自动添加back按钮,它的响应方法就是返回。所以一般不需要写返回方法,点back按钮即可。

  2. 其他时候用presentModalViewController:animated
    [self presentModalViewController:controller animated:YES];//YES有动画效果
    -----返回之前的视图 [self dismissModalViewControllerAnimated:YES];

三、页面的push/present的demo

给second界面创建一个导航栈控制器 可以保证等会push的实现
第一个界面present第二个界面

//第一个界面的按下跳转 使用present
-(void)press{
    SecondViewController *secondView = [[SecondViewController alloc]init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:secondView];
    nav.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentViewController:nav animated:YES completion:nil];
}

第二个界面push第三个界面

//第二个界面的返回按钮与按下push一个新的界面
-(void)back{
    [self dismissViewControllerAnimated:YES completion:nil];
}

-(void)push{
    ThirdViewController *thirdView = [[ThirdViewController alloc]init];
    [self.navigationController pushViewController:thirdView animated:YES];
}
//第三个界面的back 如果是dismiss那么就返回第一个界面 如果是pop那么就是第二个界面
- (void)back{
//    [self dismissViewControllerAnimated:YES completion:nil];
    [self.navigationController popViewControllerAnimated:YES];
}

[iOS开发] present 和 push

本文地址:https://blog.csdn.net/m0_46110288/article/details/108740633

相关标签: ios