53-通过xib创建窗口控制器(initWithNibName方法底层)

#import  “AppDelegate.h”
//xib描述的控制器
#import 
"rootViewController.h"
@interface   AppDelegate  ()
@end
@implementation  AppDelegate

- (
BOOL )application:( UIApplication  *)application didFinishLaunchingWithOptions:( NSDictionary  *)launchOptions {
    

    
/*
     
使用xib创建窗口控制器的常见错误 :
     
     1.
     
错误原因 : 当创建的 xib 里面是空的,没有任何描述控制器的 View 的时候就作为窗口控制器会报错
     
错误信息 :was unable to load a nib named "rootViewController"
     
解决 : xib 中添加一个 View
     
     2.
     
错误原因 : 没给 xib 中绑定 Flie 'owner
     
错误信息 :loaded the "rootViewController" nib but the view outlet was not set.'
     
解决 : xib 中绑定 Flie 'owner, 告诉 xib 是描述哪一个控制器
     
     3.
     
错误原因 : 没有连线
     
错误信息 : nib but the view outlet was not set.
     
解决 : xib Flie 'owner View 和当前 xib 连线
     */

    
    
/*
     
通过xib创建的控制器步骤
     1.
xib 有一个 View 描述控制器的 View ,设置 Flie 'owner class
     2.
xib 中的 View 跟控制器绑定 ( 连线 )
     */

     // 创建窗口控制器 xib
    
//xib=Nib
    
  rootViewController  *rootVc=[[ rootViewController   alloc initWithNibName : @"rootViewController"   bundle : nil ];
    
    
self . window . rootViewController =rootVc;
    [
self . window   makeKeyAndVisible ];
    
return   YES ;


     /*
     
通过xib创建的控制器

     
如果 NibName=nil ,默认加载与控制器类名相同的 xib(rootViewController.h)
     rootViewController *vc=[[rootViewController alloc] init]
     init 
方法底层调用的就是 initWithNibName 方法
     
     initWithNibName方法底层
    -( instancetype )initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
                 //1 . 首先判断下当前控制器是否重写了 loadView 方法
         //2 . 如果没有重写 , 进行下面判断
        
//3. 判断 nibName 否为空 , 如果为空,默认去寻找跟类名相同但是不带 Controller View.xib
        
//4. 接着去寻找和类名完全相同的 xib,ViewController.xib
        
//5. 如果都没有找到,就自动创建一个颜色几乎透明的 View
       return  [ super  initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    }

     */

 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值