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

IOS-页面跳转(基于 UINavigationController)

程序员文章站 2022-03-27 21:45:57
IOS UINavigationController 的使用前言如何使用 UINavigationController 进行页面跳转结语前言对于稍微复杂一点的 UI,页面跳转都是无法避免的。如何使用 UINavigationController 进行页面跳转都说 UINavigationController 就是一个栈结构,页面跳转实际就是出栈和入栈的操作,确实如此。下面是完整的使用过程:首先,我们需要在 AppDelegate 定义一个 UINavigationController 对象:...

前言

对于稍微复杂一点的 UI,页面跳转都是无法避免的。

如何使用 UINavigationController 进行页面跳转

都说 UINavigationController 就是一个栈结构,页面跳转实际就是出栈和入栈的操作,确实如此。
下面是完整的使用过程:

  1. 首先,我们需要在 AppDelegate 定义一个 UINavigationController 对象:
@interface AppDelegate (){
    UINavigationController *navC;
    // 这里的 myViewController 是自定义的控制器,继承于 UIViewController
    myViewController *myVC;
}

@end
  • 注:花括号中定义私有变量。
  1. 实例化、添加根视图控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    // 首先实例化 myVC
    myVC = [[myViewController alloc] init];
    // 实例化 UINavigationController,同时将 myVC 配置为根视图控制器
    navC = [[UINavigationController alloc] initWithRootViewController:myVC];
 
    // 向窗口添加根控制器
    [self.window setRootViewController:navC];
    
    // 将窗口背景色改为白色
    self.window.backgroundColor = [UIColor whiteColor];
    // 套话
    [self.window makeKeyAndVisible];
    
    return YES;
}
  • 在 AppDelegate.m 的 didFinishLaunchingWithOptions 函数中配置我们的 UINavigationController。
  • UINavigationController 本身是没有视图的,我们在实例化时,需要添加一个根视图控制器(如:UIViewController),这时栈中就有了一个元素,并且默认首先显示这个元素。
  1. 最后,通过添加新的视图控制器实现页面跳转。注意,本文中,这个页面跳转的操作是在根视图控制器下进行的。
// 实例化跳转页面的视图控制器,anotherViewController 亦为继承于 UIViewController 的自定义控制器
anotherViewController *anoVC = [[anotherViewController alloc] init];
// 使用 pushViewController 添加视图控制器
[self.navigationController pushViewController:anoVC animated:YES];
  • pushViewController 后加上 animated:YES 意为 “立即执行”。
  • 代码执行后,会进行页面跳转,转到新加入的视图控制器的页面。
  • 系统自动生成返回的按钮(默认左上角),不用我们操心。
  1. 有一个需要注意的地方就是跳转后的页面必须配置背景色,否则跳转过程中会出现惨不忍睹的重叠视象。
// 加上背景色就不会有重叠的感觉了哦
self.view.layer.backgroundColor = [UIColor whiteColor].CGColor;
  • 在跳转后页面的视图控制器的 init 函数中,加上这条语句就好了。
  • CGColor 是一个很常用的东西,可以将 UIColor 转为 CGColor。基本上背景色,元素的颜色等都必须使用 CGColor,具体什么要转,看 XCode 是否报错就行了。

结语

记录一下 UINavigationController 简单的使用流程以及一些坑。


仅供参考,敬请指正。

本文地址:https://blog.csdn.net/weixin_43536737/article/details/109611585