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

简介:

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

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

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.加载storyboard 14 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.加载storyboard 12 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.显示window 13  [self.window makeKeyAndVisible];
14 15 return YES;
16 }
复制代码
目录
相关文章
|
2天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。
|
3天前
|
编解码 Android开发 iOS开发
深入探索Android与iOS开发的差异与挑战
【6月更文挑战第24天】在移动应用开发的广阔舞台上,Android和iOS两大操作系统扮演着主角。它们各自拥有独特的开发环境、工具集、用户基础及市场策略。本文将深度剖析这两个平台的开发差异,并探讨开发者面临的挑战,旨在为即将踏入或已在移动开发领域奋斗的开发者提供一份实用指南。
25 13
|
6天前
|
iOS开发 开发者 容器
探索iOS开发中的SwiftUI框架
【6月更文挑战第21天】本文深入探讨了苹果在iOS开发中推出的SwiftUI框架,旨在为开发者提供一种声明式、更简洁的界面设计方法。文章首先概述了SwiftUI的核心概念和优势,接着通过一个天气预报应用实例,详细讲解了如何使用SwiftUI进行布局和用户界面的设计。此外,还讨论了SwiftUI与UIKit的差异,以及如何将SwiftUI集成到现有的项目中。最后,文章展望了SwiftUI的未来发展方向,包括潜在的改进和新特性。
|
2天前
|
监控 Android开发 iOS开发
探索Android与iOS开发的差异:平台、工具和用户体验的比较
【6月更文挑战第25天】在移动应用开发的广阔天地中,Android和iOS两大平台各领风骚,它们在开发环境、工具选择及用户体验设计上展现出独特的风貌。本文将深入探讨这两个操作系统在技术实现、市场定位和用户交互方面的关键差异,旨在为开发者提供一个全景式的视图,帮助他们在面对项目决策时能够更加明智地选择适合自己项目需求的平台。
|
6天前
|
Java 开发工具 Android开发
安卓与iOS开发差异解析
【6月更文挑战第21天】本文旨在深入探讨安卓和iOS两大移动操作系统在应用开发过程中的主要差异。通过对比分析,揭示各自的设计哲学、编程语言选择、用户界面构建、性能优化策略以及发布流程的异同。文章将提供开发者视角下的实用信息,帮助他们更好地理解各自平台的特点和挑战,从而做出更明智的开发决策。
|
17小时前
|
机器学习/深度学习 移动开发 文字识别
视觉智能开放平台产品使用合集之h5页面使用人脸活体检测,是否需要自己开发UI
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
1天前
|
设计模式 IDE Swift
探索iOS开发:从新手到专家的旅程
【6月更文挑战第25天】在数字时代的浪潮中,iOS开发作为一门艺术和科学的结合体,吸引了众多开发者的目光。本文将带领读者踏上一场精彩的旅程,从基础的搭建环境开始,逐步深入到高级编程技巧,再到应用发布与市场策略,全方位解读iOS开发的魅力所在。通过实际案例分析,我们将揭示那些让应用脱颖而出的秘密,以及如何在竞争激烈的应用市场中保持竞争力。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,让你的iOS开发之旅更加顺畅。
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
1月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍