iphone - 如何使用使用 Interface Builder 创建的 nib 文件加载 UIV

我正在尝试做一些复杂的事情,但应该是可能的。所以这里对你们所有的专家来说都是一个挑战(这个论坛有很多人:))。

我正在创建一个问卷“组件”,我想将它加载到 NavigationContoller(我的 QuestionManagerViewController)上。 “组件”是一个“空”的UIViewController,可以根据需要回答的问题加载不同的 View 。

我的做法是:

  1. 将 Question1View 对象创建为 UIView 子类,定义一些 IBOutlets
  2. 创建(使用 Interface Builder)Question1View.xib (这就是我的问题可能在哪里)。我将 UIViewControllerUIView 都设置为 Question1View 类。
  3. 我将 outlet 与 View 的组件链接(使用 IB)。
  4. 我将 QuestionManagerViewControllerinitWithNib 覆盖为如下所示:

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        if (self = [super initWithNibName:@"Question1View" bundle:nibBundleOrNil]) {
            // Custom initialization
        }
        return self;
    }
    

当我运行代码时,我收到了这个错误:

2009-05-14 15:05:37.152 iMobiDines[17148:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "Question1View" nib but the view outlet was not set.'

我确信有一种方法可以使用 nib 文件加载 View ,而无需创建 viewController 类。

最佳答案

还有一种更简单的方法可以访问 View ,而不是将 nib 作为数组处理。

1) 创建一个自定义 View 子类,其中包含您以后想要访问的任何 socket 。 --我的 View

2) 在要加载和处理 nib 的 UIViewController 中,创建一个 IBOutlet 属性来保存加载的 nib 的 View ,例如

在 MyViewController(一个 UIViewController 子类)中

  @property (nonatomic, retain) IBOutlet UIView *myViewFromNib;

(不要忘记合成它并在你的 .m 文件中发布)

3) 在 IB 中打开您的 nib(我们称之为“myViewNib.xib”),将文件的所有者设置为 MyViewController

4) 现在将文件的 Owner outlet myViewFromNib 连接到 nib 中的主视图。

5) 现在在 MyViewController 中,编写以下行:

[[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];

现在,只要您这样做,调用您的属性“self.myViewFromNib”即可让您从您的 nib 访问 View !

关于iphone - 如何使用使用 Interface Builder 创建的 nib 文件加载 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/863321/

相关文章:

ios - 如何在 iOS 上获取设备品牌和型号?

objective-c - 了解 dispatch_async

ios - Pod 安装停留在 "Setting up CocoaPods Master repo"

objective-c - iOS 8 对尚未渲染的 View 进行快照会导致快照为空

ios - Objective-C 中的自动引用计数不能防止或最小化什么样的泄漏?

objective-c - 为设备编译时出现 Apple Mach-O 链接器错误

ios - 将 NSString 转换为 NSDate(然后再返回)

iphone - iOS 7 导航栏文本和箭头颜色

ios - 不区分大小写的比较 NSString

ios - 架构 i386 : _OBJC_CLASS_$_SKPSMTPMessage", 的 u