#ios4 #uibutton #uinavigationitem
#ios4 #uibutton #uinavigationitem
Вопрос:
Используя приведенный ниже код, я реализую свою собственную панель навигации. По какой-то причине, когда я запускаю свое приложение, ничего не отображается для кнопки назад (стрелка влево) на панели навигации. Однако, если я изменю код на 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];
Ответ №1:
backBarButtonItem
Устанавливается родительским ViewController. Другими словами, он устанавливается не тем, ViewController
на котором вы его видите, а тем, ViewController
на что он указывает. Итак, если ваш ViewController
является первым в строке, у него просто не будет кнопки возврата.
Кроме того, вы создаете панель навигации самостоятельно. Обычно это не так, UINavigationBar
это не элемент пользовательского интерфейса, такой как кнопка или метка. Вы должны скорее использовать UINavigationController
для обработки всех нажатий и всплывающих ваших ViewControllers
.
Комментарии:
1. Я понимаю это, и обычно я бы реализовал панель навигации, как вы сказали. Однако в этом случае я программно создал SplitView, что означает, что мой splitViewController является UINavigationController. Что я хочу сделать, это скрыть панель навигации SplitView и создать уникальную панель навигации для моих левого и правого ViewControllers
Ответ №2:
Понял это:
// 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];