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

简介: iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明。 一、第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目。 2.为项目添加一个控制器类。 3.直接在代理方法中创建一个控制器。

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 }
目录
相关文章
|
7月前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
225 15
|
7月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
253 11
|
3月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
304 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
6月前
|
JavaScript 前端开发 UED
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发四
本文介绍了Web组件开发与性能优化的相关内容。在Web组件开发部分,涵盖创建组件、设置样式与属性、添加事件和方法以及场景示例,如动态播放视频。性能提升方面,推荐使用数据懒加载、条件渲染替代显隐控制、Column/Row替代Flex、设置List组件宽高及调整cachedCount减少滑动白块等方法,以优化应用性能与用户体验。
249 56
|
6月前
|
编解码 UED 开发者
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发之常见布局
本文主要介绍了自适应布局与响应式布局的相关内容。自适应布局部分涵盖线性布局、层叠布局、弹性布局和网格布局,详细说明了各布局的特性及使用方法,例如线性布局中的排列、拉伸与缩放,弹性布局的方向、换行与对齐方式等。响应式布局则重点讲解了栅格系统和媒体查询,阐述如何通过栅格组件和媒体查询条件实现不同设备上的适配效果。这些技术帮助开发者灵活应对多尺寸屏幕的设计需求,提升用户体验。
338 55
|
7月前
|
存储 开发框架 API
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发二
本文详细介绍了基于声明式UI开发的健康饮食应用的设计与实现过程。内容涵盖从基础环境搭建到复杂功能实现的全流程,包括创建简单视图、构建布局(如Stack、Flex)、数据模型设计、列表与网格布局构建,以及页面跳转和数据传递等核心功能。 本文通过实际案例深入浅出地解析了声明式UI开发的关键技术和最佳实践,为开发者提供了宝贵的参考。
265 14
|
6月前
|
JavaScript 前端开发 开发者
09.HarmonyOS Next数据驱动UI开发:ForEach与动态渲染完全指南(上)
在现代前端开发中,数据驱动UI已成为主流开发范式。HarmonyOS Next的ArkTS语言和声明式UI框架完美支持这一理念,使开发者能够以更高效、更直观的方式构建复杂应用。
179 1
|
iOS开发
iOS开发UI篇—控制器的View的创建
iOS开发UI篇—控制器的View的创建 一、6种创建控制器View的方式 1 #import "NJAppDelegate.h" 2 #import "NJViewController.
695 0

热门文章

最新文章