【问题标题】: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 嵌入到导航控制器中,我认为搜索栏可能会按预期显示。

标签: swift uisearchcontroller


【解决方案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
    
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多