Я не уверен, что я здесь отсутствует. У меня есть обычай UINavigationController
, и я пытаюсь добавить стойку UIBarButtonItem
к бару.Добавление UIBarButtonItem в UINav..Controller
-(void)viewDidLoad { self.navigationBar.barStyle = UIBarStyleBlack; UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"Nope..." style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)]; self.navigationItem.leftBarButtonItem =bbi; [bbi release]; } -(void)goBack:(id)sender { NSLog(@"go back now"); }
что мне здесь не хватает? - Кстати, я не хочу/не буду использовать IB.
UPDATE: В настоящее время это ближайший я могу получить:
-(void)viewDidLoad { self.navigationBar.barStyle = UIBarStyleBlack; UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)]; navBar.barStyle = UIBarStyleBlack; UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Currently Playing..."]; [navBar pushNavigationItem:navItem animated:NO]; UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)]; navItem.rightBarButtonItem = editButton; [self.view addSubview:navBar]; [editButton release]; [navItem release]; [navBar release]; [super viewDidLoad]; }
Это ужасно, я должен добавить весь Navbar к UINavigationController
, который уже имеет Navbar .... если я пытаюсь использовать существующий, я получаю эту ошибку:
'NSInternalInconsistencyException', reason: 'Cannot call pushNavigationItem:animated: directly on a UINavigationBar managed by a controller.'
.... действительно ???
так что происходит? Вы видите свой UINavigationController, но у него нет настраиваемой кнопки? Вы положили перерыв в вышеупомянутом методе и вызвали его? Вы прошли через него, а не ссылки на объекты - ноль? Вы перешли метод, который вызывает этот метод, и вы можете увидеть, что панель навигации установлена правильно? – stefanB
Отладчик показывает, что он действительно есть, но фактический дисплей не имеет ничего. Для чего это стоит, бар черный, как заявлено. – mlecho
Поместите свой верхний код в контроллер корневого представления, а не в свой UINavigationController. Кроме того, причиной вашей ошибки во втором случае является то, что вы не нажимаете навигационные строки, подобные этому. Когда вы используете навигационные контроллеры, вы нажимаете новые контроллеры представлений в стек навигационных контроллеров. Затем эти новые диспетчеры представлений настраивают свои навигационные элементы по мере необходимости. –