2015-08-15 4 views
2

Я занимаюсь поисковой панелью в навигационной панели. Когда я редактирую, у меня нет кнопки «Отмена» в правой части панели навигации.Панель поиска - кнопка «Отмена» в панели навигации

Пробовал:

func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 

    var barButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Done, target: self, action: "") 
    self.navigationItem.rightBarButtonItem = barButton 
} 

enter image description here

enter image description here

EDIT:

Я добавил строку поиска навигационной панели, как это:

lazy var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(0, 0, 300, 20)) 

     searchBar.placeholder = "Hľadať" 
     searchBar.barStyle = UIBarStyle.BlackTranslucent 
     var leftNavBarButton = UIBarButtonItem(customView:searchBar) 
     self.navigationItem.leftBarButtonItem = leftNavBarButton 
+0

Я довольно уверен, что кнопка отмены является своего рода вариант по умолчанию, так как есть и вариант в UISearchBar, который явно определяет «showsCancelButton», так что я не знаю, что вы должны быть разместив там свою собственную кнопку отмены. – Loxx

+0

Я добавил программу поиска программно, потому что я хочу ее в панели навигации – patrikbelis

+0

Я вижу, позвольте мне отобразить другой вариант для вас, затем – Loxx

ответ

1

Делают это таким образом:

func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { 
    var cancelSearchBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelBarButtonItemClicked") 
    self.navigationItem.setRightBarButtonItem(cancelSearchBarButtonItem, animated: true) 
    return true 
} 

И в "Отмена" обработчиком:

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    // closes the keyboard 
    searchBar.resignFirstResponder() 

    // If you are using a search controller 
    // self.searchDisplayControllerCustom.setActive(false, animated: true) 

    // remove the cancel button 
    self.navigationItem.setRightBarButtonItem(nil, animated: true) 
} 

func cancelBarButtonItemClicked() { 
    self.searchBarCancelButtonClicked(self.searchBar) 
} 

И установить правильный цвет для навигации в строке заголовка текста:

// This sets the textcolor for all navigation bars in the app 
// Do this in the app delegate on startup 
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()] 

И добавить делегат:

searchBar.delegate = self 
+0

ничего. Кнопка отмены все еще не отображается. – patrikbelis

+0

Просьба сделать текст «Отмена» больше, например «Отменить AAAAAAA», чтобы проверить, увеличивается ли пробел справа. Возможно, что установлен неправильный цвет. – Darko

+0

Нет. Ничего. Кнопка отмены все еще не отображается. – patrikbelis

0

Если это Objective-C Ответ:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{ 
    [searchBar setShowsCancelButton:YES]; 
} 

Тогда это может быть Swift ответ: (не 100% уверен)

func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 
    searchBar.showsCancelButton = true 
} 

Не забудьте связать делегата с собой.

Источник: UISearchBar Class Reference

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