• 控制器管理


    1、如何创建一个控制器

    a、通过storyboard创建:

    //先加载storyboard文件(Test是storyboard的文件名)
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
    
    //接着初始化storyboard中的控制器,初始化“初始控制器”(箭头所指的控制器)
    YLViewController *yl = [storyboard instantiateInitialViewController];
    
    //通过一个标识初始化对应的控制器
    YLViewController *yl = [storyboard instantiateViewControllerWithIdentifier:@”yl"];
    

     b、直接创建

    YLViewController *yl = [[YLViewController alloc] init];

    c、指定xib文件来创建

    YLViewController *mj = [[YLViewController alloc] initWithNibName:@"YLViewController" bundle:nil];
    

     2、控制器View的延迟加载

    控制器的View是延迟加载的,也就是说用到时再加载

    可以用isViewLoaded方法判断一个UIViewController的View是否已经被加载,控制器的View加载完毕就会调用viewDidLoad方法

    3、多控制器管理概念

    界面中有多个View时,可以用一个大的View作为父View进行统一管理,方便所有View的属性(位置、宽高)的控制。当一个APP中有多个控制器时,也需要一个控制器来统一管理,父控制器和子控制器由此而生。

    为了方便管理控制器,IOS提供了2个比较特殊的控制器(当然我们完全可以自定义它们)

    UINavigationController、UITabBarController。

    UINavigationController的简单使用

    a、初始化UINavigationController

    b、设置UIWindow的rootViewController为UINavigationController

    c、根据具体情况,通过push方法添加对应个数的子控制器

    4、UINavigationController的子控制器

    UINavigationController以栈的形式保存子控制器

      @property(nonatomic,copy) NSArray *viewControllers;

      @property(nonatomic,readonly) NSArray *childViewControllers;

    使用push方法能将某个控制器压入栈

    使用pop方法可以移除控制器

    回到指定的子控制器popToViewController

    回到根控制器popToRootViewControllerAnimated

    5、如何修改导航栏的内容

  • 相关阅读:
    题解 P5320
    Codeforces 1500F
    三个 AGC D(AGC037D、AGC043D、AGC050D)
    Atcoder Regular Contst 084 D
    DG-基础知识点整理
    MySQL-数据恢复场景实验
    MySQL-查看Galera集群状态
    MySQL-运行日志切割
    MySQL-生产环境删除大表或大量binlog策略
    MySQL-基于(MySQL 5.7)NDB中启用共享权限表
  • 原文地址:https://www.cnblogs.com/luseike/p/3900119.html
Copyright © 2020-2023  润新知