搜索栏未显示在视图控制器中

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 集合视图(模拟器)中

从 MVC 中控制器中的不同方法向视图发送消息

解决 Rails 3.2 中控制器的视图路径

SWRevealViewController 隐藏我的前视图控制器的导航栏

Spring MVC 中控制器的生命周期