iOS5将.xib分配给自定义UIView类

时间:2012-02-01 23:14:08

标签: ios objective-c ios5 uiview

HI有一个自定义视图类,使用以下代码加载并放置在我的主视图中。之所以我想用不同的内容填充它,而不是每次在代码中构建一个视图,如果我创建一个自定义类,我可以在循环等中重复使用它,我得到这个在代码中工作得很好,即铺设按钮标签等。

但是,如果我创建一个新的用户界面视图,而不是手动编写代码,那么在视图上构建我的文本字段,标签和按钮。

然后将其连接到我的自定义类。

这是我遇到问题的地方,如何连接此视图xib文件,以便在放入我的代码时可见。我已将xib文件中的自定义类属性分配给我的自定义文件,但我还缺少什么?

.h文件:

 #import <UIKit/UIKit.h>

 @interface blogView : UIView

 @end

.m文件:

 #import "blogView.h"

 @implementation blogView

 - (id)init
 {
     self = [super initWithFrame:CGRectMake(0, 0, 478, 220)];
     if (self != nil)
     {
         NSLog(@"Blog View loaded");

         self.backgroundColor = [UIColor yellowColor];

         UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 400, 40)];
         [titleLbl setText:@"This is the Title"];

         [self addSubview:titleLbl];

     }
     return self;
 }

 @end

我的xib文件名为blogView.xib,它是一个View用户界面。

在我的主视图控制器和ViewDidLoad中我有

  blogView *blogItem = [[blogView alloc]init];
  [self.view addSubview:blogItem];

当我运行时,一切正常,但我想链接到.xib文件以节省时间等。 感谢

3 个答案:

答案 0 :(得分:14)

好好环顾四周,尝试一些线索和建议,我设法用以下方法做到了这一点:

在我的.m文件中,我放置/更改了以下内容:

  self = [super init];
  if (self != nil)
      {      
          NSArray *theView =  [[NSBundle mainBundle] loadNibNamed:@"blogView" owner:self options:nil];
          UIView *nv = [theView objectAtIndex:0];

    .. rest of code.

   [self addSubview:nv];

 .. rest of code.

非常感谢

答案 1 :(得分:4)

当我重新启动我的viewcontroller类时,我挣扎了一个小时。这在Xcode 5中对我有用

  1. 转到您的XIB文件
  2. 点击左侧的文件所有者透明框
  3. 打开检查选项卡(查看部分右侧的第三个按钮 - 介于编辑器和管理器之间)
  4. 转到编辑器管理器视图选项卡下方的身份检查器(左起第3位)。
  5. 将自定义类 - 类选项修复为您希望它响应的任何类。
  6. 让我们说在浪费时间之后我非常恼火

答案 2 :(得分:0)

您可能希望为视图创建控制器,并使用initWithNibName:bundle:

加载该视图