【三种加载自定义控制器的方式 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,
那我们稍等一下啊,把它运行起来,现在它显示
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1233075.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!