【问题标题】:iOS5 Assign a .xib to a custom UIView classiOS5 将 .xib 分配给自定义 UIView 类
【发布时间】:2012-02-01 23:14:08
【问题描述】:

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,它是一个视图用户界面。

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

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

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

【问题讨论】:

    标签: ios objective-c ios5 uiview


    【解决方案1】:

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

    在我的 .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.
    

    非常感谢

    【讨论】:

    • 嗯,我无法让它在 init 中工作,相反,如果你把它放在 drawRect 中,它似乎可以工作: - (void)drawRect:(CGRect)rect { NSArray *theView = [ [NSBundle mainBundle] loadNibNamed:@"RatingPickerView" owner:self options:nil]; UIView *nv = [theView objectAtIndex:0]; [自我添加子视图:nv]; }
    • 那么如何为它制作一个控制器,以及如何从包含视图的控​​制器中引用该控制器?
    【解决方案2】:

    当我重命名我的视图控制器类时,我为此苦苦挣扎了一个小时。这在 Xcode 5 中对我有用

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

    可以说我在浪费时间之后非常恼火

    【讨论】:

      【解决方案3】:

      您可能希望为您的视图创建一个控制器并使用 initWithNibName:bundle: 加载该视图

      【讨论】:

      • 感谢您的建议,在发布之前尝试了很长时间,但无法使其正常工作,一直崩溃。
      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 2016-02-10
      • 2015-04-17
      • 1970-01-01
      • 2020-05-16
      • 2017-10-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多