在 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 3.0 中实现滑动以在没有导航栏的情况下向后导航