文档章节

iOS开发UI篇—创建初始控制器

HWJ-杰杰
 HWJ-杰杰
发布于 2015/06/26 15:31
字数 1271
阅读 18
收藏 0

原文链接:http://www.cnblogs.com/wendingding/p/3770605.html


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

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

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

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

复制代码

 1 #import "YYAppDelegate.h" 2 #import "YYViewController.h" 3  4 @implementation YYAppDelegate 5  6 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 7 { 8     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 9     // Override point for customization after application launch.10     self.window.backgroundColor = [UIColor whiteColor];11     12     //创建控制器13     YYViewController *controller=[[YYViewController alloc]init];14     //设置控制器View的背景颜色15     controller.view.backgroundColor=[UIColor brownColor];16     //设置该控制器为Window的根控制器17     self.window.rootViewController=controller;18     [self.window makeKeyAndVisible];19     return YES;20 }

复制代码

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

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

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

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

3.注意这种错误写法。

复制代码

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2 { 3     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 4     // Override point for customization after application launch. 5     self.window.backgroundColor = [UIColor whiteColor]; 6      7     YYViewController *controller=[[YYViewController alloc]init]; 8     self.window.rootViewController=controller; 9     10     [self.window makeKeyAndVisible];11     return YES;12 }

复制代码

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

4.创建代码:

复制代码

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

复制代码

步骤:

(1)加载storyboard

(2)创建控制器

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

5.拓展

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

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

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

实现代码:

复制代码

 1 #import "YYAppDelegate.h" 2 #import "YYViewController.h" 3  4 @implementation YYAppDelegate 5  6 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 7 { 8     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 9     self.window.backgroundColor = [UIColor whiteColor];10     11 //    YYViewController *controller=[[YYViewController alloc]init];12     13     //1.加载storyboard14     UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];15     16     //2.创建指定的控制器17     UIViewController *controller=[storyboard instantiateInitialViewController];18     19     //3.设置控制器为Window的根控制器20     self.window.rootViewController=controller;21     22     [self.window makeKeyAndVisible];23     return YES;24 }

复制代码

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

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

  实现代码:

复制代码

 1 #import "YYAppDelegate.h" 2 #import "YYViewController.h" 3  4 @implementation YYAppDelegate 5  6 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 7 { 8     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 9     self.window.backgroundColor = [UIColor whiteColor];10     11     //1.加载storyboard12     UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];13     14     //2.创建指定的控制器15     16     UIViewController *controller=[storyboard instantiateViewControllerWithIdentifier:@"one"];17     //3.设置控制器为Window的根控制器18     self.window.rootViewController=controller;19     20     [self.window makeKeyAndVisible];21     return YES;22 }

复制代码

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

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

2.创建过程和注意点

(1)创建代码:

复制代码

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

复制代码

(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做的事情就是下面的代码所做的事情)

复制代码

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


本文转载自:http://www.cnblogs.com/wendingding/p/3770605.html

共有 人打赏支持
HWJ-杰杰
粉丝 0
博文 13
码字总数 2164
作品 0
南京
程序员
私信 提问
疯狂ios讲义之不使用界面布局文件开发UI界面

如果打算使用纯代码来开发UI界面,则不需要设计任何界面布局文件,没有界面布局文件,也就不再需要使用自定义的视图控制器。这样程序可以直接在应用程序委托对象的application: didFinishLau...

博文视点
2014/01/20
2.4K
7
一步一步学习iOS 5编程(第三版)-PDF中文版-正式发布!

目前,这是第一本介绍iOS 5.x 和 Xcode 4.4 的中文版书籍,尤其适合于iOS 编程开发初学者。本教程由 EntLib.com 团队编写。如有任何技术问题,欢迎留言。 电子版 – PDF 格式,支持iPhone、i...

entlib
2012/09/20
0
2
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
371
0
iOS 7开发快速入门随书资料

《iOS 7开发快速入门》全面、系统地介绍了iOS 7开发技术。全书共分3篇17章。 第1篇 包括第1~4章,介绍了iOS 7的新功能、iOS 7的开发工具Xcode 5、第一个iOS 7应用程序的开发、Objective-C语...

请叫我院长
2014/02/19
812
1
疯狂ios讲义之使用代码创建UI界面

更实际的情况是,在程序运行开始时,程序已经具有一个初始的程序界面(初始界面可能只包含一个UIView),在程序运行过程中,程序需要根据用户交互来动态添加、删除UI控件。 在这种需求下,我...

博文视点
2014/01/20
948
0

没有更多内容

加载失败,请刷新页面

加载更多

BCryptPasswordEncoder加密工具类

Spring Security 提供的 BCryptPasswordEncoder 加密算法进行加密 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;/** * <p> * BCryptPasswordEncoder加......

秋至丶枫以落
16分钟前
0
0
在 Linux 上使用 tarball

Tarball 提供了一种在 Linux 系统上备份和管理一组文件的通用方法。请按照以下提示了解如何创建它们,以及从中提取和删除单个文件。 “tarball” (LCTT 译注:国内也常称为“tar 包”)一词...

Linux就该这么学
31分钟前
2
0
2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(上)

摘要: 回顾2018,展望2019,计算机科学技术继续前进! 1、简介: 过去几年一直是人工智能爱好者和机器学习专业人士最幸福的时光。因为这些技术已经发展成为主流,并且正在影响着数百万人的生...

阿里云官方博客
35分钟前
5
0
UnsatisfiedLinkError sawindbg.dll

方法:搜索sawindbg.dll,然后将文件报错的目录下

洛水
37分钟前
2
0
说说不知道的Golang中参数传递

本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为。在golang中...

腾讯云加社区
37分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部