2012-01-04 6 views
1

이것이 내 애플 리케이션의 다른 영역에서 작동하고있는 이유는 모르겠습니다. popover의 contentViewController 인 navigationController의 제목을 표시하려고합니다. 내 DetailView.m에서보다UINopigationController의 UINavigationController, 디스플레이 타이틀이 작동하지 않습니다.

 DetailView* details = [[[DetailView alloc] initWithTarget:target] autorelease]; 
     UINavigationController* content = [[[UINavigationController alloc] initWithRootViewController:details] autorelease]; 
     self.popover = [[[UIPopoverController alloc] initWithContentViewController:content] autorelease]; 
     [self.popover setDelegate:self]; 
    }  
    [self.popover presentPopoverFromRect:frame inView:self.scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

:이 코드입니다

- (id)initWithTarget:(Target*)aTarget 
{ 
    self = [super initWithNibName:@"TargetDetailView" bundle:nil]; 
    if (self) { 
     // Custom initialization 
     target = [aTarget retain]; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.title = @"Target"; 
} 

나는 또한

content.navigationItem.title = @"Target"; 

을 시도했지만 그건 내 팝 오버 나에게 제목을 제공하지 않습니다. 이견있는 사람? TIA.

답변

2

viewWillAppear에 넣고 : 애니메이션

self.navigationItem.title = @ "대상";

UINavigationController에 속하기 전에 viewDidLoad가 DetailView에서 호출되기 때문에 해당 시점에 navigationItem이 없을 수도 있습니다.

+0

그게 문제를 해결했습니다. 더 설명해 주시겠습니까? 왜 내가 다른 곳에서 작동하는 비슷한 일을하고 있기 때문에이 방법으로 작동하는지 궁금합니다. 그 상황의 유일한 차이점은 initWithNibName을 호출하는 사용자 정의 initWithTarget 메소드 대신 해당 컨트롤러를 만들 때 initWithNibName을 수행한다는 것입니다. 고마워. – Crystal

0

title 속성을 UIViewController으로 설정하면됩니다. 이 컨트롤러가 내비게이션 계층 구조에 추가되면 UINavigationController은이 제목을 고유 탐색 모음으로 읽습니다. 따라서 내비게이션 컨트롤러를 작동 시키려면 viewWillAppear:을 입력하는 대신 -viewDidLoad으로 설정하면 모든 것이 자동으로 처리됩니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"Target"; 
} 
관련 문제