iOS开发UI篇—控制器的创建

说明:控制器有三种创建方式,下面一一进行说明。

一、第一种创建方式(使用代码直接创建)

1.创建一个空的IOS项目。

2.为项目添加一个控制器类。

3.直接在代理方法中创建一个控制器。

#import "YYAppDelegate.h"
#import "YYViewController.h"@implementation YYAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];//创建控制器YYViewController *controller=[[YYViewController alloc]init];//设置控制器View的背景颜色controller.view.backgroundColor=[UIColor brownColor];//设置该控制器为Window的根控制器self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

4.控制器的view添加到Window上显示出来。

二、第二种创建方式(通过storyboard创建)

1.添加一个storyboard文件,命名为test,在界面上拖一个view controller控制器。

2.设置这个控制器和程序中的YYviewController类进行关联,设置控制器view的颜色以便区分。

3.注意这种错误写法。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];YYViewController *controller=[[YYViewController alloc]init];self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

注意:仅仅这样是不行的,因为程序中并没有加载storyboard,所以没有能够创建出我们想要的控制器。怎么办?明确的告诉要加载的storyboard。

4.创建代码:

#import "YYAppDelegate.h"
#import "YYViewController.h"@implementation YYAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.backgroundColor = [UIColor whiteColor];//    YYViewController *controller=[[YYViewController alloc]init];//1.加载storyboard,(注意:这里仅仅是加载名称为test的storyboard,并不会创建storyboard中的控制器和控件)UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];//2.下面这个方法代表着创建storyboard中箭头指向的控制器(初始控制器)YYViewController *controller=[storyboard instantiateInitialViewController];//参考//   UINib *nib=[UINib nibWithNibName:@"test" bundle:nil];//  [nib instantiateWithOwner:nil options:nil];//3.设置控制器为Window的根控制器self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

步骤:

(1)加载storyboard

(2)创建控制器

(3)把控制器设置为Window的根控制器

5.拓展

新的需求:如果在一个storyboard中又多个控制器,如何指定创建哪个特定的控制器呢?

这里有两种方法可以考虑:

(1)更改初始控制器,即把箭头拖拽到想要创建的控制器前面,在代码中进行创建。

实现代码:

#import "YYAppDelegate.h"
#import "YYViewController.h"@implementation YYAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.backgroundColor = [UIColor whiteColor];//    YYViewController *controller=[[YYViewController alloc]init];//1.加载storyboardUIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];//2.创建指定的控制器UIViewController *controller=[storyboard instantiateInitialViewController];//3.设置控制器为Window的根控制器self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

提示:注意创建的指定控制器的类型。

(2)通过设置唯一的标识符来创建指定的控制器

实现代码:

#import "YYAppDelegate.h"
#import "YYViewController.h"@implementation YYAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.backgroundColor = [UIColor whiteColor];//1.加载storyboardUIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];//2.创建指定的控制器
    UIViewController *controller=[storyboard instantiateViewControllerWithIdentifier:@"one"];//3.设置控制器为Window的根控制器self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

三、第三种创建方式(使用xib)

1.新建一个xib文件,命名为two.xib。

2.创建过程和注意点

(1)创建代码:

#import "YYAppDelegate.h"
#import "YYViewController.h"@implementation YYAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.backgroundColor = [UIColor whiteColor];//1.通过xib创建控制器YYViewController *controller=[[YYViewController alloc]initWithNibName:@"two" bundle:nil];//2.设置这个控制器为Window的根控制器self.window.rootViewController=controller;[self.window makeKeyAndVisible];return YES;
}

(2)两个错误注意点

1)不能加载(was unable to load a nib named "two"

产生原因:在xib文件中没有进行任何操作。

解决方法:往xib中拖一个view

2)加载了xib,但是没有设置输出口(loaded the "two" nib but the view outlet was not set.'

产生原因:没有把xib的view设置为YYviewController的view

解决方法:设置File‘s Owner,可以理解为设置这个文件归谁所有,对File‘s Owner和view进行连线。连线是因为一个xib中可能会有多个view,在storyboard中默认就已经进行了连线。

四、模仿有storyboard的项目控制器的创建

1.创建一个项目

2.在配置文件中,把主storyboard的名称删掉(找不到storyboard)。

3.代码(storyboard做的事情就是下面的代码所做的事情)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{// Override point for customization after application launch.// 1.创建winodwself.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];// 2.创建控制器UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];NJViewController * vc = [storyboard instantiateInitialViewController];// 3.设置window的根控制器self.window.rootViewController = vc;// 4.显示window
    [self.window makeKeyAndVisible];return YES;
}

转载于:https://www.cnblogs.com/yipingios/p/5553581.html

iOS开发UI篇—控制器的创建相关推荐

  1. iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

    一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导 ...

  2. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  3. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇-导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  4. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  5. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  6. iOS开发UI篇—实现UITableview控件数据刷新

    iOS开发UI篇-实现UITableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...

  7. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  8. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇-Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  9. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)

    iOS开发UI篇-使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...

  10. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目 ...

最新文章

  1. // synopsys_translate_off,parallel_case 和 full_case
  2. python用中文怎么说-如何实现python设置中文界面?
  3. Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本
  4. -bash:/etc/profile Permission Denied
  5. How does model reference pass from app view to master view
  6. Jlink接口的Jtag和SWD接口定义
  7. 易语言mysql表新增防止重复_sqlite数据库 大量插入数据时如何避免重复插入(易语言,做好用sql语句写下)...
  8. How-to: Build VPP FD.IO development environment with Mellanox DPDK PMD.
  9. LeetCode刷题(5)
  10. 在Gilt使用Scala、Docker和AWS演化微服务
  11. [Swift]LeetCode264.丑数 II | Ugly Number II
  12. Spark入门案例--出租车数据分析
  13. 为什么我建议每个开发人员都需要学Python?
  14. Jmeter录制脚本介绍
  15. win10无法打开超链接,组织策略阻止
  16. 如何在vue中插入语音提示
  17. matlab output()函数,matlab 函数y=f(input,output)该如何实现?
  18. Docker执行命令提示设备没有相对空间,无法创建,overlay2文件夹磁盘占满
  19. 山东高速资产注入承诺何时兑现 期待画饼成真
  20. Python Pcan USB通信(基于PcanBus)

热门文章

  1. 《奇点来临》——阿西莫夫三大定律
  2. 一位华为底层老员工的中年危机,发人深思!
  3. 使用PADDING-TOP:(PERCENTAGE)实现响应式背景图片
  4. [九度][何海涛] 数组中只出现一次的数字
  5. 关于EIGRP路由汇总问题
  6. [Flash开发笔记] List控件--删除指定label或data的项
  7. centos 6.5 httpd 服务
  8. 虚拟服务器 vmotion,图文并茂:深入了解VMware vMotion过程
  9. 电脑强制打开手机usb调试_手机、电脑录屏的5种正确打开方式,简直太快了!网友:实用...
  10. JVM学习02-虚拟机的基本结构