并加载 NIB / XIB 文件?

Posted

技术标签:

【中文标题】并加载 NIB / XIB 文件?【英文标题】:and loading NIB / XIB files? 【发布时间】:2010-06-01 16:49:57 【问题描述】:

我有点好奇,我有一个视图控制器类和一个 NIB/XIB(两者都命名为“MapViewController”)如果我执行以下操作,它会加载具有匹配名称的 NIB。

-(id)init 
    self = [super initWithNibName:@"MapViewController" bundle:nil];
    if(self) 
        do things ...
    
    return self;

另一方面,如果我只是指定 [super init] Xcode 是否只是寻找与控制器名称匹配的 NIB,这是如何工作的?

-(id)init 
    self = [super init];
    if(self) 
        do things ...
    
    return self;

干杯加里。

【问题讨论】:

【参考方案1】:

来自文档:

如果您为 nibName 指定 nil 参数并且不要覆盖 自定义中的 loadView 方法 子类,默认视图控制器 行为是寻找一个 nib 文件 谁的名字(没有 .nib 扩展名)匹配您的名称 视图控制器类。如果它发现 一、类名变成值 的 nibName 属性,结果 在相应的 nib 文件中 与此视图控制器关联。

【讨论】:

谢谢,我现在看到了,我在init下看迷路了。【参考方案2】:

是的,在这种特殊情况下它会起作用。根据UIViewController,调用init 类似于使用nil 作为笔尖名称调用initWithNibName:bundle:

如果您为 nibName 指定 nil 参数并且不要覆盖 自定义中的 loadView 方法 子类,默认视图控制器 行为是寻找一个 nib 文件 谁的名字(没有 .nib 扩展名)匹配您的名称 视图控制器类。如果它发现 一、类名变成值 的 nibName 属性,结果 在相应的 nib 文件中 与此视图控制器关联。

【讨论】:

【参考方案3】:

Xcode 是否只是寻找一个 NIB 匹配控制器的名称

差不多:

如果您为 nibName 指定 nil 参数并且不要覆盖 自定义中的 loadView 方法 子类,默认视图控制器 行为是寻找一个 nib 文件 谁的名字(没有 .nib 扩展名)匹配您的名称 视图控制器类。如果它发现 一、类名变成值 的 nibName 属性,结果 在相应的 nib 文件中 与此视图控制器关联。

【讨论】:

以上是关于并加载 NIB / XIB 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在框架内加载 `.xib` / `.nib` 文件?

界面生成器:如何加载 nib 文件

Objective-c 无法加载 nib 文件:RoosterView.xib

从 xib 加载 UITableViewCell 会导致加载 nib 但未设置视图出口

奇怪的 xib 文件到 nib 转换问题

当应用程序在主 window.xib 上运行时如何使用新的 nib 文件加载应用程序