RightBarButtonItem не отображается в панели навигации iOS

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

Код выглядит следующим образом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.
RSCListViewController *list = [[RSCListViewController alloc] initWithStyle:UITableViewStylePlain];
self.navController = [[UINavigationController alloc] initWithRootViewController:list];

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"+"
                                                              style:UIBarButtonItemStylePlain
                                                             target:list
                                                             action:@selector(addPressed:)];

self.navController.navigationItem.rightBarButtonItem = barButton;

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

[DatabaseManager openDatabase];

return YES;
}

Запуск приложения, на панели навигации не появляется элемент кнопки.

Я не уверен, что я пропустил что-то очевидное - мои попытки исправить проблему, используя связанные потоки, не принесли никакого успеха.

Любая помощь оценивается.

Ответ 1

Вам нужно прикрепить свой элемент панели к своему настраиваемому контроллеру просмотра, а не к навигационному контроллеру. Из Обновление панели навигации:

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

(...)

Контроллер навигации обновляет правую сторону панели навигации следующим образом:

  • Если новый контроллер верхнего уровня имеет пользовательский элемент правой панели, этот элемент отображается. Чтобы указать пользовательскую кнопку правого бара item, установите свойство rightBarButtonItem для контроллеров представления пункт навигации.

  • Если элемент пользовательской правой панели не указан, на панели навигации ничего не отображается в правой части панели.

Поэтому замените:

self.navController.navigationItem.rightBarButtonItem = barButton;

с:

list.navigationItem.rightBarButtonItem = barButton;