2012-04-23 3 views
2

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

Мое приложение - это приложение с вкладкой. Проблема в моей первой вкладке. Первая вкладка состоит из UINavigationController, который содержит UITableViewController. С моей AppDelegate:

UIViewController *firstViewController = [[MyTableViewController alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController]; 

_tabBarController = [[TFTabBarController alloc] init]; 
_tabBarController.delegate = self; 
_tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController, nil]; 

При выборе строки в firstViewController, я толкать UIWebViewController на навигационном стека:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIViewController *secondViewController = [[MyWebViewController alloc] init]; 
    [self.navigationController pushViewController:secondViewController animated:YES]; 
} 

На перехват OnClick гиперссылки в WebView, я нажимаю другую UITableView на стек навигации:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) 
    { 
     UIViewController *thirdViewController = [[MyTableViewController alloc] init]; 
     [self.navigationController pushViewController:thirdViewController animated:YES]; 

     return NO; 
    } 
    return YES; 
} 

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

Это, как я стараюсь, чтобы отобразить их:

self.title = @"My Title"; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Push me" style:UIBarButtonItemStylePlain target:self action:@selector(push)]; 

Я также попытался установить кнопку через navigationController, но до сих пор не повезло:

self.navigationController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Push me" style:UIBarButtonItemStylePlain target:self action:@selector(push)]; 

Что я могу делать неправильно?

ответ

0

Убедитесь, что self.navigationItem и self.navigationController не являются nil при доступе.

Из документации:

В первый раз свойство получено, объект UINavigationItem создается. Поэтому вам не следует обращаться к этому свойству, если вы не используете навигационный контроллер для отображения контроллера вида.

Хорошее место для доступа к этим членам находится под -viewDidLoad, а не при инициализации.

+0

Спасибо! Я работаю над своим приложением некоторое время, но по-прежнему иногда борюсь с тем, куда положить свой материал для инициализации. Переместил мой код в -viewDidLoad, и он работает как шарм :) – verhage

+0

Иногда это все еще случается со мной тоже .. Странно, однако, что 'self.title = @" Something ";' не работает, поскольку это должно работать, когда помещенный в -init тоже .. –

+0

Вот что заставило меня задуматься, как я это делал в своих других контроллерах вида, и почему-то это пошло не так с этим ... – verhage

Смежные вопросы