如何使用xib文件中的任何Subview(在xib中创建)的多个副本

时间:2013-08-27 12:31:46

标签: iphone ios objective-c xcode uiview

我正在使用xib为我的项目创建视图。条件是:

我有多个UIView IBoutlet的对象。

IBOutlet UIView *viewOpenDoor;
IBOutlet UIView *viewOpenDoor_Second;

viewOpenDoor仅连接到xib中的一个视图。 现在我使用此代码在viewdidload方法 -

中多次重复使用相同的视图
[viewOpenDoor setFrame:CGRectMake(30, 80, viewOpenDoor.frame.size.width, viewOpenDoor.frame.size.height)];
[self.view addSubview:viewOpenDoor];
viewOpenDoor.layer.borderColor = [UIColor blackColor].CGColor;
viewOpenDoor.layer.borderWidth = 0.9f;
viewOpenDoor.layer.cornerRadius = 6.0f;

 [viewOpenDoor setHidden:YES];

viewOpenDoor_Second = [[UIView alloc] init];
viewOpenDoor_Second = [viewOpenDoor copy];

[viewOpenDoor_Second setFrame:CGRectMake(184, 80, viewOpenDoor.frame.size.width, viewOpenDoor.frame.size.height)];

[self.view addSubview:viewOpenDoor_Second];

它正在给予例外 -

-[UIView copyWithZone:]: unrecognized selector sent to instance 0x95ba140



Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView copyWithZone:]: unrecognized selector sent to instance 0x95ba140'

所以,我的问题是如何重用xib中创建的一个IBOutlet对象,多次使用不同的实例?

2 个答案:

答案 0 :(得分:4)

您将xib加载到UINib并从UINib实例化所需的所有副本。

然后访问整个xib副本的出口。您无法复制视图,只能从同一UINib实例化多个“副本”。

如果您打算稍后创建更多,可以将UINib存储在实例变量中。

答案 1 :(得分:3)

尝试此操作: - 将UIView的所有实例(您要连接的)引用到XIB文件,如下图所示。

enter image description here