2013-08-27 2 views
4

xib를 사용하여 프로젝트의보기를 만듭니다. 조건은 다음과 같습니다.xib 파일에서 Subview (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' 

그래서, 내 질문은 내가 만든이 하나 IBOutlet 개체를 재사용 할 수있는 방법입니다 xib에서 여러 번 다른 인스턴스로?

+0

미리 감사드립니다. 빠른 응답을 기다리고 있습니다. – Nico

+1

특정보기의 xib 파일에 여러 사본을 만들어 사용할 수는 있지만 한 개체를 여러 번 다시 사용하는 방법을 알고 싶습니다. – Nico

답변

4

xibUINib에로드하고 원하는 복사본을 모두 UINib에서 인스턴스화합니다.

그런 다음 xib 전체 복사본의 콘센트에 액세스하십시오. 당신은보기를 복사 할 수 없습니다, 당신은 동일한 UINib에서 여러 "사본"을 instatiate 수 있습니다.

나중에 생성하려는 경우 UINib을 인스턴스 변수에 저장할 수 있습니다.

3

다음을 시도하십시오. - UIView의 모든 인스턴스를 아래 그림과 같이 XIB 파일로 참조하십시오.

enter image description here

+0

이 뷰는 단일 인스턴스를 가리키는 다중 인스턴스로 해당 뷰를 처리합니다. – Nico

관련 문제