我需要将导航控制器中搜索栏的方向更改为设置为中心。我已使用以下代码以编程方式创建了搜索栏:
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。这是通过界面设置的。
问题在于,当我通过代码添加搜索栏时,屏幕不显示按钮,因为它被覆盖,如下面的屏幕截图所示。
如何切换搜索栏以显示菜单按钮,然后显示中心的搜索栏?
答案 0 :(得分: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
答案 1 :(得分:2)
您的搜索栏位于左侧,因为您正在设置左侧导航按钮。请尝试更改titleView
。
let search = UISearchBar() // Create your search bar
controller.navigationController.navigationItem.titleView = search