如何在iOS 7和iOS 8上实现搜索控制器

3

我希望我的应用程序能在iOS 7和iOS 8上运行。由于UISearchDisplayController在iOS 8中已被弃用,因此我在iOS 8中使用了UISearchController。但是它在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
}

在iOS 7中使用SWIFT编写,如何像上面一样以编程方式实现UISearchDisplayController,以确保搜索栏在导航栏中可见?
2个回答

1
    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"

使搜索栏出现在导航栏中。
    searchController.searchBar.sizeToFit()
    tableView.tableHeaderView = searchController.searchBar
    definesPresentationContext = true

// 您不需要将委托设置为self,而是

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

在此之后,您需要遵循UISearchResultsUpdating协议并实现。
func updateSearchResultsForSearchController(searchController: UISearchController)

将包含您的搜索逻辑。


1
使用iOS7的方式。即使它已经过时。 否则,你将不得不编写两个代码,一个用于处理iOS7,另一个用于iOS8。 如果你的目标是iOS 7,Xcode不会显示警告。

我该如何在代码中实现UISearchDisplayController,就像我在iOS 8中所做的那样。我尝试使用searchController = UISearchDisplayController(searchResultsController: nil)代替UISearchController(searchResultsController: nil),但它不起作用。 - Nuibb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接