我正在使用故事板,并试图重用视图的不同ViewControllers。为此,我创建了几乎随处可见的自定义.xib(MyCustomView.xib
)和类(MyCustomView
)。使用自定义视图与故事板而不添加两次
在我的故事板中,我将自定义视图设置为MyCustomView
类型。
在MyCustomView.xib
中,将第一响应者设置为MyCustomView
。
在MyCustomView.m
,添加以下方法:
-(id)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
UIView *myCustomView = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0];
[self addSubview: myCustomView];
}
return self;
}
问题是,[self addSubview: myCustomView]
增加了一个新MyCustomView
现有MyCustomView
,所以视图添加两次。
我该如何摆脱两者之一?
编辑
我的问题是真不明白,所以我想一些屏幕上限会有所帮助。
这是我的故事板与自定义视图。自定义类别设置为MyCustomView
。
(我还添加了一个灰色的背景,仅用于测试目的的标签)现在
,在MyCustomView.xib
,我设置文件的所有者是MyCustomView
类:
并添加网点标题标签和imageView:
用上面写的initWithCoder方法,这工作正常,除了当我调试我可以看到这个: 所以self
是MyCustomView
类型当然,如在故事板选择,但它包含2子视图:
- 首先是从我的故事板
- 第二测试标记是从
MyCustomView.xib
,含有本身的视图标签和图像视图。 这就是我想摆脱的这种看法。
另一种方法是在故事板中完成所有操作 - 在一个控制器中创建自定义视图,然后将其复制并粘贴到其他控制器中(删除他们的默认视图,粘贴之前)。 – rdelmar
这可能会更容易,但是每次我在控制器中修改视图时,都必须相互修改它,这就是为什么我需要它在.xib文件中。 – Damien