自定义类的对象和文件的所有者和步骤通过IB混淆区别

这是另一个“我很困惑的问题”。 所以我正在将自定义视图引入视图控制器。 我只是概述错误的确切步骤。

  1. 创build单个视图应用程序项目
  2. 通过File – > New – > User Interface – > View创build一个Nib文件。 称它为NIB.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连接这个笔尖,所以我通过File – > New – > UIView创buildArcView。

“4。 在IB中,我需要将NIB连接到ArcView,以便在占位符中突出显示文件所有者,并在自定义类中selectAcrView。

在这里输入图像说明

'5.' 然后,我select主视图并将其设置为自定义类中的ArcView。

在这里输入图像说明

我对下一步是否感到不知所措,或者4或5是否是必要的(两者兼而有之)? 我是否试图在ArcView中创build一个sockets引用来查看Interface Builder中的主视图? 我应该能够从视图拖到助理编辑器(我目前不能)的头文件?

thx提前

**编辑1 **

以下是设置了arcView的文件所有者:

在这里输入图像说明

未设置arcView视图对象:

在这里输入图像说明

设置文件的所有者==你的UIView子类,以便你可以连接sockets。 而且你应该把被绘制的UIView的类设置为相同的子类,因为它是该UIView子类的一个实例。

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

  1. 创build一个名为CustomView的UIView子类
  2. 创build一个UIView xib新build文件 – >用户界面 – >查看
  3. 将文件的所有者更改为CustomView
  4. 将视图的类更改为CustomView
  5. 添加子视图,如果你愿意,将它们作为出口连接到文件所有者(CustomView)

你的崩溃正在发生,因为你的代码说:

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

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

为了解决这个问题,给你的UIView子类从nib开始自己的工作,就像这样:

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; } 

如上所述,我用这个东西build立了一个小项目。 工作正常。 让我知道你是否想看到它,我会find一种方法来发送给你一个匿名邮编。

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

 @property (weak, nonatomic) IBOutlet ArcView *arcView 

然后进入界面生成器,并右键单击文件的所有者。 当您在黑色HUD窗口中看到“arcView”时,将鼠标从该项目拖到XIB上的视图中。

现在你有一个arcview控件的属性,你可以像使用UIButton,UILabel等控件一样使用它。