美文网首页
项目初始化架构

项目初始化架构

作者: LucXion | 来源:发表于2017-09-11 09:59 被阅读0次
  • 项目基本架构图
Snip20170911_1.png
程序启动时,手动加载UIWindow
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
// Override point for customization after application launch.    
// 1.先创建window    
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor yellowColor];

// 2.加载控制器   
// 2.1通过xib添加,加载顺序 view -> viewController.xib -> 默认创建一个几乎透明的view;    
    UIViewController *vc1 = [[UIViewController alloc] init];   
// 指定加载xib    
    UIViewController *vc2 = [[UIViewController alloc] initWithNibName:@"xib的名字" bundle:nil];      
// 2.2通过storyBoard添加。    
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// 2.2.1 storyBoard加载Identifier的标记的控制器。    
    [storyBoard instantiateViewControllerWithIdentifier:@"Identifier"];
// 2.2.2 storyBoard默认加载箭头指向的控制器。
    UIViewController *vc = [storyBoard instantiateInitialViewController];
      
// 3. 设置UIWindow的根控制器
    self.window.rootViewController = vc;
// 4. 将UIWindow显示出来    
    [self.window makeKeyAndVisible];    
    return YES;
}

  • 控制器的3种创建方式

方法一 alloc init 方法

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

方法二 storyboard
第一步:
新建storyboard和操作: 创建新的storyboard(新建文件 user interface 中的 storyBoard) 在新建的storyboard中添加控制器(storyboard就是为了添加控制器的) 给stoBoard设置入口初始化控制器 箭头指向 : Is Initial View Controller
第二步:
获取storyboard文件对象:(此处类似加载xib文件)

// bundle在尾,可以为nil,这里取storyboard文件只是为了根据文件找控制器
 UIStoryboard *board = [UIStoryboard storyboardWithName:@"ViewControllerOne" bundle:nil];   

// 初始化storyboard中的控制器 : 根据控制器的标识
UIViewController *rootVc = [board instantiateViewControllerWithIdentifier:@"tuhuangse"] 

方法三 xib : xib的本质就是一个View,原则上不能拖控制器,但实际上能直接拖控制器,但是控制器不能用

    第一部分: 创建UIViewController类文件
    
    第二部分: 新建xib和操作 : 新建xib ,拖入控件 , fileowner(在导航区)绑定Controller类文件,再连线View

    第三部分: 在appdelegate的程序启动完成方法中,根据fileowner绑定的Controller文件创建控制器(用loadnib的方法,确定要加载的View)

    创建xib的时候用empty,不然容易冲突

注意:当出现xib文件名与控制器名相同(为不加Controller的名,或者完全同名)时,加载xib可以不填写文件名:直接alloc init,此时加载xib的优先级,完全同名的优先级比较高.

初始化控制器的时候:
调用init方法,底层调用了initWithFrame方法
storyBoard或者xib加载的调用initWithCoder方法,解析文件;

控制器中的View是懒加载的 : (根据懒加载的特点:用到的时候才会创建来证明)

证明步骤 : 手动创建根窗口,在进行到将窗口设置为主窗口的方法前,都不会进入ViewdidLoad方法 / 但是如果在设置主窗口之前就设置控制器View的背景颜色,那么就会进入ViewdidLoad方法

相关文章

  • 项目初始化架构

    项目基本架构图 控制器的3种创建方式 方法一 alloc init 方法 方法二 storyboard ...

  • 关于git fork的实践

    公司团队中很多小组会使用vue架构搭建新的web项目,可能每个项目的创建者在初始化项目的时候都选择不同的项目设置、...

  • 【代码篇】从零开始一步步搭建自己的golang框架(二)

    上一篇我写到了项目初始化完成,今天接着写。目标是完成项目基本的代码目录架构。 第一步 首先,创建main.go文件...

  • 微信小程序开发01

    微信小程序开发01 1、从0开发helloworld 从0开发hello,world,初始化一个项目,基本架构只留...

  • vuex源码分析(一)——初始化vuex

    本文参考珠峰架构公开课之vuex实现原理 vuex是基于vue框架的状态管理。 如何在vue项目中初始化vuex?...

  • vue-cli

    vue-cli脚手架的优势 有一套成熟的vue项目架构设计,能够快速初始化一个Vue项目.vue-cli是官方支持...

  • 基于Element UI的后台管理搭建

    1.首先项目初始化 2.首先项目初始化

  • dva.js 上手

    初始化 安装 dva-cli 用于初始化项目: 创建项目目录,并进入该目录: 初始化项目: 然后运行 npm st...

  • webpack构建项目

    webpack构建项目 一. 初始化项目 npm init -y 初始化项目信息 npm install --sa...

  • 第3章 敏捷项目管理概述 转

    第3章 敏捷项目管理概述 3.1 敏捷项目管理架构 1.敏捷项目管理架构概述 敏捷项目管理架构(Agile Pro...

网友评论

      本文标题:项目初始化架构

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