【问题标题】:How to implement search controller for both iOS 7 & iOS 8如何为 iOS 7 和 iOS 8 实现搜索控制器
【发布时间】:2015-01-27 09:42:17
【问题描述】:

我的目标是我的应用程序应该在 iOS 7 和 iOS 8 上运行。由于 UISearchDisplayController 在 iOS 8 中已被弃用,我将 UISearchController 用于 iOS 8。但它在 iOS 7 中不起作用。如果我使用 UISearchDisplayController 那么它将起作用在 iOS 7 中。但是为这两个平台实现搜索控制器的最佳方法是什么?在 iOS 8 中,我实现了如下搜索控制器 -

    override func viewDidLoad() {
            super.viewDidLoad()

            // Search Controller Setup
            searchController = UISearchController(searchResultsController: nil)
            searchController.searchBar.delegate = self
            searchController.searchResultsUpdater = self
            searchController.dimsBackgroundDuringPresentation = false
            searchController.searchBar.placeholder = "ব্র্যান্ড/সংস্থা/দোকান খুঁজুন"

            // Make sure the that the search bar is visible within the navigation bar.
            searchController.searchBar.sizeToFit()
            tableView.tableHeaderView = searchController.searchBar
            definesPresentationContext = true
}

对于 SWIFT 中的 iOS 7,我如何像上面那样以编程方式实现 UISearchDisplayController 以确保搜索栏在导航栏中可见?

【问题讨论】:

    标签: swift ios7 ios8 uisearchdisplaycontroller uisearchcontroller


    【解决方案1】:

    使用ios7的方式。即使它弃用了。 否则您将不得不编写两段代码,一段用于处理 iOS7,另一段用于处理 iOS8。 如果您的目标是 iOS 7,Xcode 不会向您显示警告。

    【讨论】:

    • 如何像在 iOS 8 中那样以编程方式实现 UISearchDisplayController。我尝试了 searchController = UISearchDisplayController(searchResultsController: nil) 而不是 UISearchController(searchResultsController: nil)。但它不起作用
    【解决方案2】:
        searchController = UISearchController(searchResultsController: nil)
    

    // 改变搜索栏的外观

        searchController.searchBar.tintColor = UIColor.whiteColor()
        searchController.searchBar.barTintColor = UIColor(red: 235.0/255.0, green: 73.0/255.0, blue: 27.0/255.0, alpha: 1.0)
        searchController.searchBar.placeholder = "Search Something"
        searchController.searchBar.prompt = "Quick Search"
    

    // 让searchBar出现在导航栏中

        searchController.searchBar.sizeToFit()
        tableView.tableHeaderView = searchController.searchBar
        definesPresentationContext = true
    

    // 你不需要将delegate设置为self,而是

        searchController.searchResultsUpdater = self
        searchController.dimsBackgroundDuringPresentation = false // important
    

    在这之后,你需要遵守 UISearchResultsUpdating 协议并实现,

    func updateSearchResultsForSearchController(searchController: UISearchController)
    

    其中将包含您的搜索逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      相关资源
      最近更新 更多