【问题标题】:What does nibNameOrNil really mean?nibNameOrNil 的真正含义是什么?
【发布时间】:2012-02-20 21:55:43
【问题描述】:

XCode 生成的视图控制器上的默认 init 方法签名是:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ }

我已经看到这些初始化时提供了两个值,只是笔尖名称(捆绑为 nil),或者只是 nil 两者都提供。似乎一切正常。

UIViewController 是如何真正处理self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 的?只为这两个值传入nil 有缺点吗?

【问题讨论】:

    标签: iphone ios cocoa-touch


    【解决方案1】:

    如果您将nil 作为 nibName 传递,该方法将查找与您的视图控制器具有相同文件名的 nib。

    例如,如果您有一个名为 MyViewController 的视图控制器,它将查找 MyViewController.xib nib 文件。

    如果没有找到 nib,则需要重写 loadView 方法来创建 UIView 并将其分配给控制器的视图出口。

    - (void)loadView
    {
        UIView *theView = [[UIView alloc] ...
        // Setup the main view
        self.view = theView;
    }
    

    【讨论】:

    • 正是我想要的。谢谢!
    【解决方案2】:

    来自docs

    笔尖名称:

    如果为 nibName 参数指定 nil 并且不覆盖 loadView 方法,则视图控制器会使用其他方式搜索 nib 文件。请参阅 nibName。

    nibBundle:

    在其中搜索 nib 文件的包。此方法首先在包的特定语言项目目录中查找 nib 文件,然后是 Resources 目录。如果为 nil,此方法会在主包中查找 nib 文件。

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 2012-03-30
      • 2011-10-10
      • 2012-08-03
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多