IT门户网,专注电脑知识与技术及手机硬件信息服务网站!

当前位置:IT门户网 > 系统教程 >

iOS UIViewController之间的切换

时间:2021-09-14    来源:IT门户网    人气:

我是一枚刚进修iOS的菜鸟,项目中常常会涉及到UIViewController之间的跳转,常用的就是PushViewController及PResentViewController,此刻简朴先容下他们之间的区别。

PushViewController与PresentViewController的区别

PushViewController是导航的方法跳转,阁下切换,与PopViewController对应,以栈的方法打点,可以把栈领略成一个瓶子,用户能看到的就是瓶子最上面的对象。而PreSentViewController是模态的方法跳转,上下切换,与dismissViewController对应。本质上是用一个模态ViewController遮住本来的ViewController,可是可以配置新模态窗口的尺寸,所以不必然会把旧的ViewController完全遮住(假如不配置,默认完全遮住)

假设有两个页面A、B,A为ViewController,B为SecondViewController,跳转的几种代码如下:

PushViewController方法

从A->B

SecondViewController *secondViewController = [[SecondViewController alloc] init];[self.navigationController pushViewController:secondViewController animated:YES]; //[self.navigationController setNavigationBarHidden:YES animated:YES]; // 埋没导航栏从B->A[self.navigationController popViewControllerAnimated:NO];这里有个坑,在利用PushViewController跳转时发明没起浸染。不要着急,这是因为self.navigationController为nil,我们只要添加根视图为NavigationController就行了。办理这个问题有两个要领:

1.storyboard的方法

在xcode->Editor->Embed In->Navigation Controller

2.代码的要领,修改AppDelegate.m文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; ViewController *viewController = [[ViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:viewController]; self.window.rootViewController = nav; [self.window makeKeyAndVisible]; return YES;}PreSentViewController方法从A->B SecondViewController *secondViewController = [[SecondViewController alloc] init]; [self presentViewController:secondViewController animated:YES completion:^{ }];从B->A [self.navigationController dismissViewControllerAnimated:NO completion:^{ }];简朴的跳转这样已经可以实现了,可是我在网上看到别的一种跳转方法,原因说是为了办理从A跳转到B时导航栏消失的问题,可是我在项目中做悬浮框时也必需这样写,还不大领略,先贴出来 SecondViewController *secondViewController = [[SecondViewController alloc] init]; UINavigationController *navigationcontoller = [[UINavigationController alloc]initWithRootViewController:secondViewController]; navigationcontoller.navigationBar.hidden = YES; [self presentViewController:navigationcontoller animated:YES completion:^{ }];

相关文章

系统教程排行榜

更多>>

网络知识排行榜

更多>>

系统教程排行榜

更多>>

服务号