Цвет и заголовок навигационной панели - PullRequest
1 голос
/ 08 августа 2011

У меня было много .xib файлов, и я пытаюсь воссоздать их программно.

Единственная проблема в том, что я больше не могу настраивать свою панель навигации.

De версиифункция вызывается другим представлением с несколькими кнопками панели, поэтому код является общим для других функций:

- (void)versions
{
    VersionsViewController *verController = [[VersionsViewController alloc] initWithDocument:document];
    [verController setDelegate:self];

    [self loadPopupView:verController];

    [verController release];
}

- (void)loadPopupView:(UIViewController *)viewController
{
    if (popOverController != nil && [popOverController isPopoverVisible]) 
    {
        [popOverController dismissPopoverAnimated:YES];
    }

    if(![popOverController isPopoverVisible] || ![popOverController.contentViewController isKindOfClass:[viewController class]])
    {
        popOverController = [[UIPopoverController alloc] initWithContentViewController:viewController];
        popOverController.popoverContentSize = CGSizeMake(320, 500);

        UIBarButtonItem *buttonLocation;

        if([viewController isKindOfClass:[CommentaryViewController class]])
            buttonLocation = commentaryButton;
        else if([viewController isKindOfClass:[PropertiesViewController class]])
            buttonLocation = propertiesButton;
        else
            buttonLocation = versionsButton;

        [popOverController presentPopoverFromBarButtonItem:buttonLocation permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}

VersionsViewController.m

- (id)initWithDocument:(Document *)doc
{
    self = [super init];

    if(self)
    {
        self.document = doc;
        self.title = @"other title"; //does not work either

        //I just tried everything I could think of :P
        self.navigationController.navigationBar.tintColor = [UIColor orangeColor];
        self.navigationItem.titleView.backgroundColor = [UIColor redColor];
        self.navigationController.navigationItem.titleView.backgroundColor = [UIColor greenColor];
        self.navigationController.tabBarController.tabBar.backgroundColor = [UIColor blueColor];
        self.navigationController.navigationBar.backgroundColor = [UIColor purpleColor];
    }

    return self;
}

Может кто-то увидеть, что я сделал неправильно?

РЕДАКТИРОВАТЬ:

NSLOG из self.title и self.navigationController.title имеют оба значения 'null'

Когда я создаю навигационный контроллер, добавьте представление и добавьте навигационный контроллер вво всплывающем окне я получаю 2 бара, а затем могу установить заголовок контроллера навигации, но все же не цвет.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Просто любопытно: если у вас есть рабочие файлы пера, почему вы воссоздаете их программно?

В initWithDocument: вы еще не присвоили nvaigationController.Вам нужно будет собрать один из них вручную и установить в него VersionViewController (после этого будет установлено navigationController).Автоматическое выполнение всей этой работы является одной из причин, по которой мы используем nib-файлы.

EDIT Каждый раз, когда «ничего не происходит», проверяйте, что объект, которым вы отправляете сообщения, не является nil.Я уверен, что navigationController все еще nil, когда вы доберетесь до него.Вы также должны NSLog интересующие вас объекты и посмотреть их адреса.Возможно, вы случайно создаете несколько представлений или несколько контроллеров навигации.Это очень часто делается, когда вы пытаетесь собрать этот материал вручную.Перья - правильное решение в большинстве случаев.

0 голосов
/ 08 августа 2011
- (void)versions
{
    VersionsViewController *verController = [[VersionsViewController alloc] initWithDocument:document];
    [verController setDelegate:self];
    UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:verController];
    [self loadPopupView:navC];
    [verController release];
    [navC release];
}
...