2013-10-02 2 views
2

레이아웃 및 생성에 도움이되는 관련 Nib (.xib) 파일이있는 사용자 지정 UIView 클래스를 만들려고합니다.Nib (.xib)가 포함 된 사용자 정의 UIView의 하위보기가로드되지 않습니까?

현재 내 nib 파일에 존재하며 IBOutlets를 통해 내 사용자 정의보기 클래스에 제대로 연결되어 있어도 사용자 정의보기의 하위보기가 나타나지 않습니다.

나는 다음과 같은 다른 대답을 통과 시도

: Load custom UIView with XIB from a View Controller's view using IB

이 하나 How do I get a view in Interface Builder to load a custom view in another nib?

이 하나 http://soulwithmobiletechnology.blogspot.com/2011/06/create-uiview-with-nib-file-in-xcode-4.html

만에 이르는, -[initWithCoder:]를 호출하는 것 [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] 방법 무한 루프.

이 버그를 해결하는 데 도움이되는 다른 세부 정보를 알려주십시오.

업데이트 1 : 내 서브 뷰를 -[layoutSubviews]을 통해 배치해야합니까? 내 펜촉 파일이 실제로 그것을 레이아웃하지 않은가요? 그렇다면 nib 파일의 요점은 무엇입니까?

+0

nim을 initWithCoder 또는 awakeFromNib에서로드하려고합니까? – HereTrix

답변

4

열기 뷰 컨트롤러의 당신의 viewDidAppear 방법에이 코드를 붙여 넣습니다 뷰를 제공하기 위해, 당신이해야 할 모든입니다

NSArray * allTheViewsInMyNIB = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; // loading nib (might contain more than one view) 
MyCustomView* problemView = allTheViewsInMyNIB[0]; // getting desired view 
problemView.frame = CGRectMake(0,0,100,100); //setting the frame 
[self.view addSubview:problemView]; // showing it to user 

. 이 뷰와 상호 작용하려면 메서드에서가 아니라 클래스 인터페이스에 MyCustomView* problemView을 선언해야합니다.

+0

Hoorah, 그게 효과가! –

+1

그러나 캡슐화를 중단하지 않습니까? 펜촉 이름을 염려하는 유일한 엔터티가 UIView 자체일까요? 다음과 같이 : http://blog.bignerdranch.com/129-real-iphone-crap-2-initwithnibnamebundle-is-the-designated-initializer-of-uiviewcontroller/ –

+0

또한, 왜 이것이'- [ viewDidAppear :]'? 어떤 레이아웃도하지 않는 한, 왜 [- [viewDidLoad]'로 인스턴스화 할 수 없습니까? –

관련 문제