美文网首页
iOS 多控制器管理

iOS 多控制器管理

作者: 肉肉要次肉 | 来源:发表于2018-07-25 18:03 被阅读13次

    一共有三种方式可以创建控制器:直接创建、storyboard、xib

    直接创建:

    HMViewController  *hm = [[HMViewController   alloc]  init];

    storyboard:

    //设置窗口:

    self.window = [[UIWindow  alloc] initWithFrame:[UIScreen  mainScreen].bounds];

    //加载控制器

    //参数一:Main,文件名,系统默认是main.storyboard,不需要后缀显示

    //参数二:nil = [NSBundle mainBundle]

    UIStoryboard  *storyboard = [UIStoryboard  storyboardWithName:@"Main"  bundle:nil];

    //创建storyboard描述的控制器

    方法一:instantiateInitialViewController帮你加载箭头指向的控制器

    UIViewController  *vc = [storyboard  instantiateInitialViewController];

    方法二:根据标识符创建storyboard描述的控制器

    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"org"];

    // 将控制器添加到窗口

    self.window.rootViewController = vc;

    // 将窗口设置为可见

    [self.window makeKeyAndVisible];

    注意:storyboard只能加载系统自己的,自己自定义的只能用xib的方式去加载,因为类型不匹配

    xib:

    //创建窗口

    self.window = [[UIWindow  alloc]  initWithFrame: [UIScreen  mainScreen].bounds];

    //加载名为ViewController的xib文件

    UIViewController  *vc = [[UIViewController  alloc] initWithNibName:@"ViewController"  bundle:nil];

    //将控制器添加到窗口

    self.window.rootViewController  = vc;

    //将窗口设置为可见

    [self.window  makeKeyAndVisible];

    延迟加载

    // 控制器的view加载完成的时候调用

    -(void)viewDidLoad{

       [super  viewDidLoad];

       UIView  *baby = [[UIView  alloc] init];

       baby.backgroundColor = [UIColor  blueColor];

       [self.view  addSubview:baby];

    }

    延迟加载原理:

    在主线程自己创建了一个蓝色的view最后在控制器显示的是下面红色的view,最后它会调用下面的这个代理方法,所以显示的是红色的view,而不是蓝色的view

    当应用程序启动完成的时候,系统会自动调用代理这个方法

    -(BOOL)application:(UIApplication  *)application  didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions{

       self.window  =  [[UIWindow  alloc] initWithFrame:[UIScreen  mainScreen].bounds];

       UIViewController  *baby = [[UIViewController  alloc]  init];

       baby.view.backgroundColor  = [UIColor  redColor];

       self.window.rootViewController  = baby;

       [self.window makeKeyAndVisible];

       return YES;

    }

    多控制器

    一个iOS的app很少只由一个控制器组成,除非这个app极其简单 当app中有多个控制器的时候,我们就需要对这些控制器进行管理,有多个view时,可以用一个大的view去管理1个或者多个小view

    控制器也是如此,用1个控制器去管理其他多个控制器

    比如,用一个控制器A去管理3个控制器B、C、D,控制器A被称为控制器B、C、D的“父控制器”,控制器B、C、D的被称为控制器A的“子控制器”

    为了便于管理控制器,iOS提供了2个比较特殊的控制器

    UINavigationController  和  UITabBarController

    ...

    相关文章

      网友评论

          本文标题:iOS 多控制器管理

          本文链接:https://www.haomeiwen.com/subject/pcfmmftx.html