【三种加载自定义控制器的方式 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 
              
              如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!