搜索栏未显示在视图控制器中
Posted
技术标签:
【中文标题】搜索栏未显示在视图控制器中【英文标题】:Search bar not showing in view controller 【发布时间】:2020-02-28 04:53:58 【问题描述】:我正在尝试以编程方式将搜索栏添加到我的视图控制器,但问题
我遇到的是搜索栏在视图控制器中不可见,我想知道如何在视图控制器中显示搜索栏。
class LocationViewController: UIViewController
let locationManager = CLLocationManager()
var resultSearchControlle: UISearchController? = nil
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad()
super.viewDidLoad()
let locationSearchTable = storyboard!.instantiateViewController(identifier: "LocationSearchTable") as! LocationTableViewController
resultSearchControlle = UISearchController(searchResultsController: locationSearchTable)
resultSearchControlle?.searchResultsUpdater = locationSearchTable
let searchBar = resultSearchControlle!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search for a place"
navigationItem.titleView = resultSearchControlle?.searchBar
navigationItem.hidesSearchBarWhenScrolling = false
definesPresentationContext = true
locationSearchTable.mapView = mapView
【问题讨论】:
ios 11+?试试navigationItem.searchController = resultSearchControlle
是的,它是 iOS 11+,我确实尝试过,但无济于事
你只是在添加搜索栏...而不是控制器
我认为您的问题可能是您没有用于显示搜索栏的导航栏。如果您将 LocationViewController 嵌入到导航控制器中,我认为搜索栏可能会按预期显示。
【参考方案1】:
在导航控制器中嵌入您希望搜索栏出现的视图控制器:
在 Storyboard 中选择您的 LocationViewController,然后在菜单中选择..
编辑器 -> 嵌入 -> 导航控制器
【讨论】:
【参考方案2】:我正在使用你的代码并得到这个结果
var resultSearchControlle: UISearchController? = nil
// MARK: - Constants
//static let reuseIdentifier = "Cell"
override func viewDidLoad()
resultSearchControlle = UISearchController()
let searchBar = resultSearchControlle!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search for a place"
navigationItem.titleView = resultSearchControlle?.searchBar
navigationItem.hidesSearchBarWhenScrolling = false
definesPresentationContext = true
// locationSearchTable.mapView = mapView
【讨论】:
以上是关于搜索栏未显示在视图控制器中的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的 Xcode:导航栏未显示在 UI 集合视图(模拟器)中