UINavigationItem BackButtonItem не отображается - PullRequest
2 голосов
/ 13 октября 2011

Используя приведенный ниже код, я реализую свою собственную панель навигации.По какой-то причине, когда я запускаю свое приложение, ничего не отображается для кнопки «назад» (стрелка влево) на панели навигации.Однако, если я изменю код на leftBarButtonItem, кнопка появится.

// Draw Navigation Bar
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[navigationBar setDelegate:self];

UINavigationItem *navigationItem = [[UINavigationItem alloc] init];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                                style:UIBarButtonItemStylePlain
                                                               target:nil 
                                                               action:nil];
navigationItem.backBarButtonItem = backButton;
[navigationBar pushNavigationItem:navigationItem animated:NO];
[self.view addSubview:navigationBar];
[navigationBar release];
[backButton release];

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

backBarButtonItem устанавливается родительским ViewController.Другими словами, он установлен не ViewController, на который вы его видите, а ViewController, на который он указывает.Поэтому, если ваш ViewController является первым в очереди, у него просто не будет кнопки возврата.

Кроме того, вы сами создаете панель NavigtionBar.Обычно это не тот путь, UINavigationBar - это не элемент пользовательского интерфейса, такой как кнопка или метка.Вам лучше использовать UINavigationController для обработки всех нажатий и выталкиваний вашего ViewControllers.

1 голос
/ 13 октября 2011

Разобрался:

// Draw Navigation Bar
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[navigationBar setDelegate:self];

UINavigationItem *navigationItem = [[UINavigationItem alloc] init];

UIButton *button = [UIButton buttonWithType:101];
// add selector
[button setTitle:@"Back" forState:UIControlStateNormal];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button];

navigationItem.leftBarButtonItem = backButton;
[navigationBar pushNavigationItem:navigationItem animated:NO];
[self.view addSubview:navigationBar];
[navigationBar release];
[backButton release];
...