2011-03-09 4 views
1

UINavigationController 내에 UIViewController이 있고, XIB 파일의 네비게이션 스택에 두 번째 UIViewController을 밀고 있습니다. 이 XIB에는 두 번째보기 컨트롤러의 제목과 단추에 대한 UINavigationItem도 포함되어 있지만 XIB를로드 할 때 무시됩니다. 어떤 아이디어?iPhone -보기 컨트롤러를 xib에서로드 할 때 UINavigationItem이 무시되었습니다.

여기가이 컨트롤러와는 아무 상관이 없기 때문에

- (void) displayPhotoWithId:(int)photoId { 

    if (_photoViewController == nil) { 
     self.photoViewController = [[[PhotoViewController alloc] initWithNibName:@"PhotoView" bundle:[NSBundle mainBundle]] autorelease];   
    } 

    _photoViewController.photoId = photoId; 

    [self.navigationController pushViewController:_photoViewController animated:YES]; 

} 

답변

0

탐색 항목이 무시됩니다 (photoViewController 두 번째의 ViewController입니다) 내 코드, 그냥이 컨트롤러의 XIB에있을 일어났다. 컨트롤러의 네비게이션 항목은 인스턴스 생성시 생성됩니다. 컨트롤러에 navigationItem 콘센트가 없으므로 코드에 제목과 탐색 단추 (예 : viewDidLoad)를 설정해야합니다. XIB의 UINavigationItem은 UINavigationController의 루트 컨트롤러에서만 작동합니다.

+0

감사합니다. hoha. 따라서 Interface Builder에서 UINavigationItem을 사용할 방법이 없습니다. – Greenwell

+0

나는 두렵지 않다. 그것은 컨트롤러에서 뷰로드 순서와 관련이 있습니다. 나는 그것이 무엇인지 잊었지만 지금 UINavigationItem은 XIB에서 작동하지 않습니다. – hoha

3

인터페이스 빌더에서이를 연결할 수 있습니다. 보기 컨트롤러에이 같은 추가 :

IBOutlet UINavigationItem* navigationItem; 

그런 다음 (당신의 XIB에서 UINavigationItem에, 아마도, 파일 소유자) 뷰 컨트롤러 콘센트에 철사. 나는 이것을했으며 잘 작동한다. 나는 UINavigationController이 'navigationItem'을 자동으로 찾는다 고 가정합니다.

+1

컨트롤러보기가 UINavigationController에 추가되기 전에로드 된 경우이 방법이 작동합니다. – Sulthan

+0

Sulthan과 합의했습니다. 루트 컨트롤러가 XIB에서 navigationItem을로드하면 충돌이 발생합니다. 스토리 보드를 사용하거나 코드에서 그렇게하는 것이 좋습니다. – Chilv

관련 문제