在 Swift 中实现搜索栏

Posted

技术标签:

【中文标题】在 Swift 中实现搜索栏【英文标题】:Implementing Search Bar in Swift 【发布时间】:2014-08-18 14:23:40 【问题描述】:

我一直在尝试在我的表格视图中实现一个搜索栏,以允许用户搜索事务名称。

这是我正在学习的教程:http://www.appcoda.com/search-bar-tutorial-ios7/

我在尝试将 Objective C 代码转换为 Swift 时遇到了问题,因为我卡在了“filterContentForSearchText”行。

这是我目前用于搜索栏的代码:

func filterContentForSearchText(searchText: NSString, scope: NSString) 
    let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
    searchResults = arrayDataPayments.filteredArrayUsingPredicate(resultPredicate)
    println(searchResults)


func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool 

    self.filterContentForSearchText(searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles)
    return true

谁能告诉我哪里出错了?

【问题讨论】:

【参考方案1】:

您可能必须这样做:

self.filterContentForSearchText(searchText: searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles[self.searchDisplayController.searchBar.selectedScopeButtonIndex])

【讨论】:

这给了我错误'找不到成员'objectAtIndex'。如果我使用 self.filterContentForSearchText(searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles().objectAtIndex(self.searchDisplayController.searchBar.selectedScopeButtonIndex)) 那么我得到错误 '(UISearchDisplayController!, shouldReloadTableForSearchString: String!) -> Bool没有名为“searchBar”的成员。 该代码现在运行,但不幸的是,我在该代码行上收到错误“致命错误:在展开可选值时意外发现 nil”。 检查scopeButtonTitles(或该行代码中的任何其他可选类型)是否为零。 @user3746428 要检查 nil,请使用 if 语句:if variable != nil。你可能想看看these questions。

以上是关于在 Swift 中实现搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

这是如何在 swift 4 中实现的?

使用 Swift 在 iOS 中平滑搜索栏动画

使用swift3在tableview中搜索栏和部分

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

如何解决在离子3中实现搜索栏的管道时出现的错误(管道搜索找不到或未找到)

如何通过 Interface Builder 在 Objective-C 中实现搜索栏