这是另一个“我很困惑的问题”。所以我正在努力将自定义视图引入视图控制器。我将概述错误的确切步骤。
添加以下代码:
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创建ArcView - >新 - >的UIView。
“4。在IB中,我需要将NIB连接到ArcView,因此我在占位符中突出显示文件所有者,然后在自定义类中选择AcrView。
'5'。然后,我选择主视图并将其设置为自定义类中的ArcView。
我对下一步是什么或者是否需要4或5(两者都兼有)感到茫然?我是否尝试在ArcView中创建出口参考以查看Interface Builder中的主视图?我是否可以在助理编辑器中将View从View拖动到头文件中(我目前无法进行)?
事先提前**编辑1 **
这是使用arcView设置的文件所有者:
未设置arcView的查看对象:
答案 0 :(得分:1)
在父类的@interface部分中定义一个IBOutlet @property,如下所示:
@property (weak, nonatomic) IBOutlet ArcView *arcView
然后进入Interface Builder,右键单击File的Owner。当您在黑色HUD窗口中看到“arcView”时,将鼠标从该项目拖动到XIB上的视图。
现在你有一个arcview控件的属性,你就可以像使用UIButton,UILabel等任何控件一样使用它。
答案 1 :(得分:1)
设置文件的所有者==您的UIView子类,以便您可以连接出口。你应该将nib绘制的UIView类设置为同一个子类,因为它是该UIView子类的一个实例。
换句话说,请按照以下步骤操作:
您的崩溃正在发生,因为您的代码说明了这一点:
UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"theNIB" owner:self options:nil] objectAtIndex:0];
但是owner:self
是运行此代码的视图控制器。您希望视图子类是nib的所有者。
要修复,请为您的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;
}
如上所述,我在其中构建了一个小项目。工作良好。 Lemme知道你是否愿意看到它,我会找到一种向你发送匿名邮编的方法。