iOS开发UI篇—控制器的创建
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.加载storyboard
UIStoryboard *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.加载storyboard
UIStoryboard *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.创建winodw
self.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;
}
iOS开发UI篇—控制器的创建的更多相关文章
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...
- iOS开发UI篇—控制器的View的创建
iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...
- 【转】 iOS开发UI篇—控制器的View的创建
最近对view的周期等还不是非常清楚,就找到顶哥的文章,非常不错,就搬运过来了. 原文: http://www.cnblogs.com/wendingding/p/3770760.html 一.6种创 ...
- iOS开发UI篇—CAlayer(创建图层)
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- IOS开发UI篇—导航控制器属性和基本使用
IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...
- iOS开发UI篇—CAlayer(自定义layer)
iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—核心动画(转场动画和组动画)
转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...
随机推荐
- javascript jsscript .js xml html json soap
javascript ecma标准的脚本语言用于 jsscript 微软标准的一种脚本语言 .js javascript或jsscript保存成文件的形式可用于在html里重复引用 jsscript只 ...
- .Net 中HashTable,HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较
参考资料 http://www.cnblogs.com/MichaelYin/archive/2011/02/14/1954724.html http://zhidao.baidu.com/link? ...
- vs extension
优先级高低
- CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached
我本身是学.net的,但是现在很多主流SQL和NOSQL都是部置在linux下,本着好学的精神,前段时间装了个虚拟机,在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说, ...
- CAN总线抓包
马六: 由此可见, 马6的7e9跟7e8反馈的数据差不太多. 而标志508反馈的情况则不同, 波箱跟发动机反馈完全不同: 宝马3的数据如下: 证明宝马也有7e8跟7ec, 但是貌似7e8是主流啊... ...
- Python之检查URL
# -*- coding: utf-8 -*- import os,sys import time import sys import pycurl #URL="http://www.bai ...
- WPF:常见问题
1.自定义Main函数 背景: wpf 默认的Main函数在 App.g.cs文件中,在App.xmal.cs内自定义Main函数后冲突. 解决方法: 法一: 1)新建class1.cs类,在其中设置 ...
- zigbee学习之路(七):定时器3(中断方式)
一.前言 上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出. 二.原理与分析 要使用定时器3,我们必须先要配置的是T3CTL,来把定时器 ...
- MySql_十六进制值
十六进制值 MySQL支持十六进制值.在数字上下文中,十六进制数如同整数(64位精度).在字符串上下文,如同二进制字符串,每对十六进制数字被转换为一个字符: mysql> SELECT x'4D ...
- crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
crawler4j是用Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫.下面实例结合jsoup解析网页,javacsv存储采集数据:采集自如ziroom租房网(h ...