0

Я пытаюсь добавить 2 кнопки другу UINavigationController в навигационном-баре:UIBarButtonItem не отображается в UINavigationController

1) кнопка стандартной «назад» на левой стороне - которая работает, и

2) кнопка «поиск» с правой стороны - которая не отображается.

Вот код:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

// 1st button - this shows up correctly: 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init]; 
backButton.title = @"MAIN"; 
self.navigationItem.backBarButtonItem = backButton;  

// 2nd. button - this one does not show up: 
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] 
              initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
              target:self 
              action:@selector(goSearching:)]; 
self.navigationItem.rightBarButtonItem = searchButton; 


itemsByTitleVC *itemsView = [[itemsByTitleVC alloc] initWithNibName:@"itemsByTitleVC" bundle:nil]; 


[self.navigationController pushViewController:itemsView animated:YES]; 

}

кто, почему это не работает? (За что его стоит, я использую Xcode 4.2 с раскадровки ...)

+0

установить вторую кнопку после того, как вы нажмете ViewController или установите вторую кнопку в своих конкретных элементах. Контроллер ByTitleVC – CarlJ

+0

не работает. Я попробовал до того, чтобы добавить rightBarButtonItem в viewDidLoad viewController, который был нажат - не работал ... – sirab333

ответ

5

Ваша установка rightBarButtonItem к filterButton, но она не должна быть searchButton?

// 2nd. button - this one does not show up: 
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] 
              initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
              target:self 
              action:@selector(goSearching:)]; 
// Here I think you wanna add the searchButton and not the filterButton.. 
self.navigationItem.rightBarButtonItem = searchButton; 
+0

извините :-) Это была действительно опечатка с моей стороны - но только в этом посте - у меня есть он набрал прямо в коде - и он не работает ... – sirab333

+0

Но пытались ли вы создать кнопку правого бара в контроллере itemsByTitleVC в методе viewDidLoad? Похоже, что вы устанавливаете rightBarButton, но он становится переопределенным в новом представлении. Левая кнопка, возможно, работает, потому что ее стандартная кнопка возврата всегда отображается. – Prine

+0

Я попытался установить кнопку поиска в методе viewDidLoad объекта itemsByTitleVC viewController - он все еще не работал. Вот код, который я использовал - это тот же самый код, но, возможно, ему нужно настроить его с помощью viewDidLoad сейчас?: 'UIBarButtonItem * searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemSearch target: self action: @selector (goSearching :)]; self.navigationItem.rightBarButtonItem = searchButton; ' – sirab333

0

Возможно, вы смешали поискButton with filterButton?

EDIT:

Еще раз я посмотрел на свой код, и я заметил, что вы делаете это в: didSelectRowAtIndexPath.

Когда вы устанавливаете self.navigationItem.rightBarButtonItem, на самом деле вы меняете кнопку текущего навигационного контроллера, а не кнопку itemsByTitleVC.

Итак, это разрешение, переместите этот фрагмент кода в нечто внутри элементов ByTitleVC, например viewDidLoad: или viewWillAppear :.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

+0

снова, хороший улов - но это была просто опечатка в этой публикации - которую я исправил (см. Выше) - я последовательно использую «searchButton» в коде, так что это не проблема ... – sirab333

+0

Я переместил код в viewDidLoad - не работает ... – sirab333

0

Я столкнулся с этой проблемой сегодня, и в конце концов я узнал, что мой (и ваши)

self.navigationItem.rightBarButtonItem 

является только для чтения свойство класса UIView.

Объявление о вашей собственности, которая указывает на barbuttonItem, и вы можете изменить кнопку.

-1

Я столкнулся с этой проблемой, и, наконец, я решил ее, используя метод setter для установки rightBarButtonItem. Мне нравится [self.navigationItem setRightBarButtonItem:saveButton animated:YES];.

+0

с помощью установщика здесь не имеет значения. – Wayne

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