2013-08-27 27 views
4

我使用xib爲我的項目創建視圖。條件是:如何使用xib文件中的任何子視圖(在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]; 

它給exception-

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



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

所以,我的問題是,如何重新建立這一IBOutlet對象在xib中,多次使用不同的實例?

+0

在此先感謝,我在等待別人的快速回復。 – Nico

+1

我可以在該特定視圖的xib文件中創建多個副本並使用它們,但我想知道重複使用一個對象多次的方法。 – Nico

回答

4

您將xib加載到UINib中,並從UINib實例化所需的所有副本。

然後訪問整個xib副本的出路。你不能複製一個視圖,你只能安裝同一個UINib的多個「副本」。

如果您打算稍後創建更多,則可以將UINib存儲在實例變量中。

3

試試這個: - 將UIView的所有實例(您想要連接的)引用到XIB文件中,如下圖所示。

enter image description here

+0

它將該視圖視爲指向單個對象的多個實例。 – Nico