UINavigationController в UIPopoverController, отображение заголовка не работает - PullRequest
1 голос
/ 04 января 2012

Я не уверен, почему это не работает, так как работает в другой области моего приложения. Я пытаюсь отобразить заголовок для navigationController, который является contentViewController для popover. Это код:

        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];

Чем в моем DetailView.m:

- (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";

но это не дает мне название в моем поповере. Какие-нибудь мысли? ТИА.

Ответы [ 2 ]

2 голосов
/ 05 января 2012

положить это в viewWillAppear: animated

self.navigationItem.title = @ "Target";

Я подозреваю, что viewDidLoad вызывается в DetailView передявляется частью UINavigationController и поэтому может не иметь навигационного элемента в то время.

0 голосов
/ 05 января 2012

Все, что вам нужно сделать, это установить свойство title для UIViewController. Как только этот контроллер попадет в иерархию навигации, UINavigationController будет читать этот заголовок в своей собственной панели навигации. Поэтому вместо ввода viewWillAppear: для работы с контроллером навигации просто установите его в -viewDidLoad, и все будет обрабатываться автоматически.

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