为对象和通过IB文件的所有者和步骤定制类之间的区别感到困惑(confused difference

2019-07-20 18:36发布

这是另一种“我很困惑的问题”。 所以,我的工作带来的自定义视图到视图控制器。 我就勾勒出错误的具体步骤。

  1. 创建一个单一的视图应用项目
  2. 通过文件创建一个笔尖文件 - >新建 - >用户界面 - >查看; 称之为theNIB.xib。 添加一个简单的标签,以确保负载。
  3. 添加以下代码:

     UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"theNIB" owner:self options:nil] objectAtIndex:0]; view.frame=CGRectMake(10.0f,10.0f,100.0f,100.0f); view.backgroundColor=[UIColor orangeColor]; [self.view addSubview:view]; 

这工作。

现在我想要做的就是用UICustomView所以我通过文件创建ArcView的连接此笔尖 - >新建 - > UIView的。

“4。 在IB,我需要theNIB连接到ArcView的,所以我强调文件的所有者的占位符,并在自定义类选择AcrView。

'5.' 然后,我选择主视图,并将其设置在自定义类为ArcView。

我在为下一个步骤是什么损失或4或5是否有必要(两者/没有)? 我试图在ArcView的插座参考查看在Interface Builder的主视图? 我应该可以按住Alt键从查看到助理编辑的头文件(我不是目前能)?

THX提前

**编辑** 1

以下是文件的所有者与ARCVIEW集:

与ARCVIEW视图对象没有设置:

Answer 1:

定义你这样的父类的@interface部分一个IBOutlet @property:

@property (weak, nonatomic) IBOutlet ArcView *arcView

然后进入界面生成器,并用鼠标右键单击文件的所有者。 当你看到在黑HUD窗口“ARCVIEW”,拖动从该项目的鼠标在厦门国际银行视图。

现在,你有你的ArcView的控制属性,你可以利用它就像你的任何控制,如UIButton的,等的UILabel



Answer 2:

设置文件的所有者==您的UIView子类,这样就可以出口连接到它。 你应该在类笔尖画的UIView设置为相同的子类,因为它是UIView子类的实例。

换句话说,请按照下列步骤操作:

  1. 创建一个名为CustomView一个UIView子类
  2. 创建一个UIView厦门国际银行新文件 - >用户界面 - >查看
  3. 更改文件的所有者CustomView
  4. 更改视图的类CustomView
  5. 子视图添加,如果你愿意的话,它们连接为网点文件的所有者(CustomView)

您的崩溃发生的事情,因为你的代码这样说:

UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"theNIB" owner:self options:nil] objectAtIndex:0];

但是, owner:self就是这个代码运行视图控制器。 你想视图子类是笔尖的所有者。

要解决,给你的UIView子类的初始化-ING本身从笔尖,像这样的工作:

CustomView.h

@interface CustomView : UIView

- (id)initFromNib;

@end

CustomView.m

#import "CustomView.h"

@interface CustomView ()
// connect this in the XIB to file's owner that you've set to this CustomView class
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end

@implementation CustomView

- (id)initFromNib
{
    self = [[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil] objectAtIndex:0];

    if (self) {
        // prove you can set properties on your outlets
        self.myLabel.text = @"this is good";
    }
    return self;
}

我建了一个小项目,只是这东西在里面所描述的。 工作良好。 还是让我知道,如果你想看到它,我会想办法向您发送匿名拉链。



文章来源: confused difference between Custom Class for an Object and for the File's Owner and steps via IB
标签: ios uiview ios6