【三种加载自定义控制器的方式 Objective-C语言】

一、关于这个手动创建Window呢,给大家说完了

通知

1.但是呢,要给大家补充一个东西,

有时候,有的框架,可能会用到什么东西呢,我写到下面:

通知

[UIApplication sharedApplication]

通知

什么东西,是不是应用程序对象,

然后呢,keyWindow

是不是拿到它的主窗口,

通知

然后呢,add什么东西,

[UIApplication sharedApplication].keyWindow addSubview:

通知

然后,加了一个它自定义的一个什么Window啊,customWindow

[[UIApplication sharedApplication].keyWindow addSubview:customWindow];

通知

然后呢,加进去以后,跑了半天,一点儿效果都没有,

通知

那提示大家,这种情况,你怎么解决呢,

就不要去用这种方式去加了啊,

就把它改一下,就行了,

[UIApplication sharedApplication]

通知

它是不是有一个什么属性:

通知

windows属性:

通知

然后呢,你给它拿个lastObject

通知

[[UIApplication sharedApplication].windows lastObject];

把它加到最后一个窗口,

然后呢,再去addSubview,

通知

[[[UIApplication sharedApplication].windows lastObject] addSubview:customWindow];

通知

把这个customWindow加进去,了解一下啊,这个,

通知

这个不需要大家掌握的,以后你在写的时候,如果别人的有些东西你显示不出来,有个印象就行了,

通知

知道怎么去解决,

好吧,那我们把这个就关了,

然后,接下来,给大家介绍一下下面一个东西,

通知

二、关于我们这个“三种加载控制器的方式“

1.那,现在我们学的都是哪些加载控制器,

1)现在大家了解的,是不是有一个storyboard,

2)还有一个,就是我们刚刚演示的,加载自定义控制器的时候,直接自定义了一个控制器,那种方式,相当于一个纯代码的方式,

通知

明白吧,因为我们没有storyboard,

也没有其他的东西,

2.那接下来呢,要给大家介绍的,三种创建控制器的方式,

1)第一种,就是纯代码,这个是不是跟我们刚才那个重复了,所以我们待会儿就直接快一点儿给它过去,就行了,

2)第二种,就是通过storyboard,创建控制器,那前面的时候,我们一直在用,知道它是通过storyboard加载,但是呢,我们并不知道怎么去加载,对吧,那你手动去实现一下,那就理解了,

3)第三种,就是通过xib创建控制器

通知

这个xib,我们是不是常见,

但是,没有用,对吧,

那接下来呢,我们就来给大家看一下这三种方式加载控制器,怎么去用

三、纯代码方式加载控制器

1.那首先呢,我先新建一个项目,

通知

新建一个项目,

通知

给它来个Name,

通知

- 3种加载自定义控制器的方式

通知

我们点Next,看一下这是第几份代码,

通知

是不是05了,

05 - 3种加载自定义控制器的方式,

通知

然后呢,

通知

首先,我们加载自定义控制器,三种加载控制器的方式,

那我呢,还是,一样的,我把系统的这些先给它删了,

通知

自己来实现,

选中这三个:ViewController.h、ViewController.m、Main.storyboard

通知

选中这三个,删掉,

Delete,

通知

Move to Trash,

通知

2.删完之后,还得干嘛,

通知

是不是把info.plist,Main,改掉,

但是呢,你在这个项目这个Target,里面这个General,

通知

看到没有,这个General显示蓝色的时候,意味着它选中了,

这里面有一个Main Interface,

通知

在这儿呢,Delete,然后,回来,

通知

看info.plist里面,

通知

是不是也就没有了,

而且那个Main storyboard file base name,都没了,

所以呢,这种方式也可以的啊,

然后呢,我们就,把三种加载自定义控制器的方式,都来一遍,

1)第一种:通过代码去创建控制器

2)第二种:通过storyboard去创建控制器

3)第三种:通过xib去创建控制器

通知

建三个文件夹,分门别类的去存放代码,

1)Code

2)Storyboard

3)xib

那,首先,加载自定义控制器,

通知

还是,我们先把前面坑给它先挖好,

1)第一步:先创建Window

通知

2)第二步:设置窗口的根控制器,然后呢,你得加载,对吧

通知

3)第三步:将窗口作为主窗口并可见

通知

好,我们再写一遍啊,后面就直接用了,

好,那我把这个1、3、先写了,

1)创建window

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

通知

self.window = 等于什么,是不是UIWindow alloc,直接让它等于屏幕的大小吧,[UIScreen mainScreen].bounds

3)将窗口作为主窗口并可见

[self.window makeKeyAndVisible];

通知

让这个self.window,makeKeyAndVisible,

2)设置窗口的根控制器

然后这步呢,就是加载控制器,设置它的根控制器,

哦,这里写错了,makeKeyAndVisible,对吧,

通知

makeKeyAndVisible,

然后,如果这么写,makeKeyWindow,是不是得加一个hidden = NO

[self.window makeKeyAndVisible];

通知

makeKeyAndVisible,

通知

然后呢,接下来,是不是把self.window.rootViewController,要指定一下,

通知

self.window.rootViewController = ?

通知

但是呢,现在我们没有控制器

//self.window.rootViewController = ?

通知

现在,我们没有控制器,对不对,那,怎么办呢,

1)首先,第一种方式,Code,已经演示过了,自定义控制器,现在还记得吗,是不是Command + N,

通知

现在,不用UIViewController,了啊,

我用UITableViewController,

给大家演示一下,

是不是这里选择Cocoa Touch Class,

通知

点Next,继承自UITableViewController

通知

继承自UITableViewController

通知

Name:HMTableViewController

通知

点Next,

通知

点Next,

通知

那,现在是不是这个代码就有了,

它的类,这是实际上就是一个控制器类,

然后呢,再回到AppDelegate.m,文件中,

通知

AppDelegate,

然后,在第10行代码呢,我给它加一个导入头文件,

#import “HMTableViewController.h“

通知

对吧,

通知

这种方式呢,就相当于通过纯代码创建控制器,

怎么创建,

HMTableViewController *tableVc = [[HMTableViewController alloc] init];

通知

然后呢,把它指定为我们窗口的根控制器,

self.window.rootViewController = tableVc;

通知

模拟器换成iPhone6S,

通知

command + R,

通知

那我们稍等一下啊,把它运行起来,现在它显示

Guess you like

Origin blog.csdn.net/madoca/article/details/134376703