这是另一种“我很困惑的问题”。 所以,我的工作带来的自定义视图到视图控制器。 我就勾勒出错误的具体步骤。
- 创建一个单一的视图应用项目
- 通过文件创建一个笔尖文件 - >新建 - >用户界面 - >查看; 称之为theNIB.xib。 添加一个简单的标签,以确保负载。
添加以下代码:
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视图对象没有设置:
定义你这样的父类的@interface部分一个IBOutlet @property:
@property (weak, nonatomic) IBOutlet ArcView *arcView
然后进入界面生成器,并用鼠标右键单击文件的所有者。 当你看到在黑HUD窗口“ARCVIEW”,拖动从该项目的鼠标在厦门国际银行视图。
现在,你有你的ArcView的控制属性,你可以利用它就像你的任何控制,如UIButton的,等的UILabel
设置文件的所有者==您的UIView子类,这样就可以出口连接到它。 你应该在类笔尖画的UIView设置为相同的子类,因为它是UIView子类的实例。
换句话说,请按照下列步骤操作:
- 创建一个名为CustomView一个UIView子类
- 创建一个UIView厦门国际银行新文件 - >用户界面 - >查看
- 更改文件的所有者CustomView
- 更改视图的类CustomView
- 子视图添加,如果你愿意的话,它们连接为网点文件的所有者(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