2016-07-26 3 views
2

Мне нужно изменить ориентацию панели поиска в навигационном контроллере, который будет установлен в центр. Я создал поисковую панель программно с помощью этого кода:Панель поиска центра в навигационном контроллере swift

lazy var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(100, 40, 440, 40)) 

и viewDidLoad:

searchBar.placeholder = "Search for Places" 
     var leftNavBarButton = UIBarButtonItem(customView:searchBar) 
     self.navigationItem.leftBarButtonItem = leftNavBarButton 

Однако я также barButtonItem в левой. Это было установлено через интерфейс.

enter image description here

Вопрос заключается в том, что, когда я добавить строку поиска через код, на экране не отображается кнопка, как она покроется, как показано на скриншоте ниже.

enter image description here

Как я могу сдвинуть панель поиска, чтобы показать кнопку меню, затем в строке поиска в центре?

ответ

4

причина вы назначена searchBar к leftBarButtonItem, что причина, он показывает в левой стороне, если вам нужно в центре навигации добавить поиск по titleView для навигационной панели, изменить

 searchBar.placeholder = "Search for Places" 
    var leftNavBarButton = UIBarButtonItem(customView:searchBar) 
    self.navigationItem.leftBarButtonItem = leftNavBarButton 

в

lazy var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(0, 0, 440, 40)) 
searchBar.placeholder = "Search for Places" 
self.navigationItem.titleView = searchBar // or use self.navigationcontroller.topItem?.titleView = searchBar 
+0

напр видеть эту ссылку http://www.ioscreator.com/tutorials/customizing-navigation-bar-ios8-swift –

+0

работал отлично! –

2

Ваша поисковая панель слева, потому что вы устанавливаете левую навигационную кнопку. Попытайтесься вместо этого изменить titleView.

let search = UISearchBar() // Create your search bar 
controller.navigationController.navigationItem.titleView = search