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

标签 iphone objective-c ios cocoa-touch interface-builder

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

我正在创建一个问卷“组件”,我想将它加载到 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/

相关文章:

iphone - 调用存在于多个类中的方法的最佳方法

iphone - AFJSONRequestOperation因“数据参数为零”而崩溃NSJSONSerialization错误

ios - 为Swift文件的方法列表制作头文件?

iphone - 如何加载和保存 UIButton 的 alpha?

iphone - 重新启动应用程序后,Sqlite插入丢失

ios - 手指绘制的运动路径

ios - 使用分页符编辑 NSString

ios - 从 iphone 和 IOS 应用程序访问在线 Slim API

iphone - cocos2d Sprite 动画

iphone - CLLocationManager 初始化并调用按钮