关键词:
【中文标题】如何在 iOS8 中实现 UISearchController?【英文标题】:How to implement UISearchController in iOS8? 【发布时间】:2015-06-25 02:40:49 【问题描述】:我尝试在 IOS8 中实现 UISearchController 但失败了。
问题是当我更改了文本和范围按钮时,会向我显示注释。
当我更新搜索栏或范围按钮时,似乎甚至没有调用 updateSearchResultsForSearchController 函数。
这是我的代码:
class SearchTestController: UITableViewController, UISearchResultsUpdating
struct Candy
let category : String
let name : String
var searchcontroller = UISearchController(searchResultsController: nil)
func updateSearchResultsForSearchController(searchController: UISearchController)
filteredcandy = candies.filter() (candy:Candy) -> Bool in
let scopetest = ( self.category[self.searchcontroller.searchBar.selectedScopeButtonIndex] == "All" ) || ( candy.category == self.category[self.searchcontroller.searchBar.selectedScopeButtonIndex] )
//let texttest = candy.name.rangeOfString(self.searchcontroller.searchBar.text)
//let result = scopetest && (texttest != nil)
return scopetest
println(filteredcandy.count)
self.tableView.reloadData()
var candies = [Candy]()
var filteredcandy = [Candy]()
var category = ["Chocolate","Hard","Other","All"]
override func viewDidLoad()
super.viewDidLoad()
// Sample Data for candyArray
self.candies = [Candy(category:"Chocolate", name:"chocolate Bar"),
Candy(category:"Chocolate", name:"chocolate Chip"),
Candy(category:"Chocolate", name:"dark chocolate"),
Candy(category:"Hard", name:"lollipop"),
Candy(category:"Hard", name:"candy cane"),
Candy(category:"Hard", name:"jaw breaker"),
Candy(category:"Other", name:"caramel"),
Candy(category:"Other", name:"sour chew"),
Candy(category:"Other", name:"gummi bear")]
// Reload the table
self.tableView.reloadData()
self.tableView.tableHeaderView = searchcontroller.searchBar
searchcontroller.searchBar.sizeToFit()
searchcontroller.searchBar.showsSearchResultsButton = true
self.definesPresentationContext = true
searchcontroller.searchBar.scopeButtonTitles = category
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if searchcontroller.active
return self.candies.count
else
return self.candies.count
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
//ask for a reusable cell from the tableview, the tableview will create a new one if it doesn't have any
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
var candy : Candy
// Check to see whether the normal table or search results table is being displayed and set the Candy object from the appropriate array
if searchcontroller.active
candy = filteredcandy[indexPath.row]
else
candy = candies[indexPath.row]
// Configure the cell
cell.textLabel!.text = candy.name
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
return cell
【问题讨论】:
您是否为搜索控制器设置了代理? 【参考方案1】:将以下行添加到viewDidLoad()
searchcontroller.searchResultsUpdater = self
searchcontroller.delegate = self
更新:
在viewDidLoad()
中添加以下行
searchcontroller.searchBar.delegate = self
然后更新searchBar(_:selectedScopeButtonIndexDidChange:)
中的搜索结果
【讨论】:
谢谢,确实解决了问题。但是我还有一个问题,我发现结果只有在更新搜索文本时才更新,但在更新范围按钮时没有更新,这与 Apple 的文档不一致。这是一个错误吗? 谢谢,Praveen,我知道这会起作用,只是觉得这样做有点尴尬和多余,updateSearchResultsForSearchController() 函数应该像文档中描述的那样起作用。跨度> 这可能是一个错误,要让它工作,请从selectedScopeButtonIndexDidChange
调用updateSearchResultsForSearchController
,如here 所示。我不得不在我的应用程序中使用相同的 hack,它使用范围栏和 UISearchController
如何在我自己的应用程序中实现 Apple Music 中的迷你播放器?
】如何在我自己的应用程序中实现AppleMusic中的迷你播放器?【英文标题】:HowcanIimplementtheminiplayerinAppleMusicinmyownapp?【发布时间】:2015-08-2723:56:35【问题描述】:Apple在iOS8.4上的AppleMusic中引入了新的UI。当一个音轨开始播放时,... 查看详情
如何在 laravel 中实现 vuetify?
】如何在laravel中实现vuetify?【英文标题】:Howtoimplementvuetifyinlaravel?【发布时间】:2018-07-2123:32:58【问题描述】:我是vuetify的新手,我试图在laravel中实现它。有人已经在laravel中实现了vuetify,可以告诉我怎么做吗?我已经安装... 查看详情
如何在android中实现BottomAppBar?
】如何在android中实现BottomAppBar?【英文标题】:howtoimplementBottomAppBarinandroid?【发布时间】:2020-12-2823:06:46【问题描述】:如何在android中实现BottomAppBar。build.gradleimplementation\'com.google.android.material:material:1.0.0-beta01\'activity_main 查看详情
如何在android中实现svm模型?
】如何在android中实现svm模型?【英文标题】:Howtoimplementsvmmodelinandroid?【发布时间】:2014-05-3121:47:13【问题描述】:我在Matlab中使用svmtrain训练了分类器,现在我不知道如何在android中实现模型。甚至没有一个例子来展示如何使用... 查看详情
如何在 Gson 中实现 TypeAdapterFactory?
】如何在Gson中实现TypeAdapterFactory?【英文标题】:HowdoIimplementTypeAdapterFactoryinGson?【发布时间】:2014-04-1323:34:16【问题描述】:如何在Gson中实现TypeAdapterFactory类型?create的主要方法是泛型的。为什么?注册方法registerTypeAdapterFacto... 查看详情
如何在 Fragments 中实现 onBackPressed()?
】如何在Fragments中实现onBackPressed()?【英文标题】:HowtoimplementonBackPressed()inFragments?【发布时间】:2011-07-2320:22:18【问题描述】:有没有一种方法可以在AndroidFragment中实现onBackPressed(),类似于我们在AndroidActivity中的实现方式?由... 查看详情
如何在 exoplayer 中实现 OkHttpDataSourceFactory?
】如何在exoplayer中实现OkHttpDataSourceFactory?【英文标题】:HowdoyouimplementOkHttpDataSourceFactoryinexoplayer?【发布时间】:2020-12-0714:51:40【问题描述】:在exoplayer中如何实现OkHttpDataSourceFactory?【问题讨论】:【参考方案1】:我翻遍了,... 查看详情
如何在 Swift 中实现 NSWindowRestoration?
】如何在Swift中实现NSWindowRestoration?【英文标题】:HowtoimplementNSWindowRestorationinSwift?【发布时间】:2014-06-1000:50:12【问题描述】:我尝试在非基于文档的应用程序中在Swift中实现NSWindowRestoration协议。然而,restoreWindowWithIdentifier方... 查看详情
如何在 Scala 中实现 DAO?
】如何在Scala中实现DAO?【英文标题】:HowtoimplementDAOinScala?【发布时间】:2011-07-1819:24:50【问题描述】:我想在Scala中实现DAO,如下所示:traitDAO[PK,-T,-Q]//Tisa"valueobject",PKisaprimarykey,andQisqueryparameters.defcreate(t:T):Unitdefupdate(t:T):Unitdefr... 查看详情
如何在 Swift 中实现单例类
】如何在Swift中实现单例类【英文标题】:HowtoImplementSingletonclassinSwift[duplicate]【发布时间】:2016-02-1822:01:56【问题描述】:我是swift编程新手,请告诉我如何使用代码在swift中实现单例类。在obj-c中我知道+(id)sharedManagerstaticMediaMode... 查看详情
如何在 JavaScript 中实现锁
】如何在JavaScript中实现锁【英文标题】:HowtoimplementalockinJavaScript【发布时间】:2011-07-1719:55:47【问题描述】:如何在JavaScript中实现与C#中的lock等效的东西?所以,为了解释我的想法,一个简单的用例是:用户点击按钮B。B引发o... 查看详情
如何在矢量中实现按钮
】如何在矢量中实现按钮【英文标题】:Howtoimplementbuttoninavector【发布时间】:2012-12-0915:42:18【问题描述】:在我的桌子上。我想在我可以按下的每一行中放置一些按钮。但我不知道该怎么做publicstaticDefaultTableModelbuildTableModel(Resu... 查看详情
如何在颤动中实现这种效果/布局?
】如何在颤动中实现这种效果/布局?【英文标题】:Howtoachievethiseffect/layoutinflutter?【发布时间】:2021-10-0520:29:18【问题描述】:我发现,这种搜索效果是内置在ios框架中的。但是这种布局如何在Flutter中实现呢?【问题讨论】:... 查看详情
这是如何在 swift 4 中实现的?
】这是如何在swift4中实现的?【英文标题】:Howisthisimplementedinswift4?【发布时间】:2018-08-0413:25:33【问题描述】:我有这个link用于表格视图中的下拉搜索栏。我能够使用此代码在tableview中实现搜索栏searchController.searchResultsUpdater=s... 查看详情
如何在 RecyclerView 中实现 StartActivityForResult
】如何在RecyclerView中实现StartActivityForResult【英文标题】:HowtoimplementStartActivityForResultinRecyclerView【发布时间】:2018-07-1916:07:21【问题描述】:我正在尝试在我的RecyclerView中使用startActivityForResult并且不知道如何...尝试了这种方式... 查看详情
如何在 Chrome 中实现抓取光标图标?
】如何在Chrome中实现抓取光标图标?【英文标题】:HowcanyouimplementagrabbingcursoriconinChrome?【发布时间】:2011-04-0715:32:01【问题描述】:我知道可以在Chrome中使用抓取光标图标(当然是在Gmail中),但我不知道如何在我的代码中实现... 查看详情
如何在电子中实现延迟深度链接
】如何在电子中实现延迟深度链接【英文标题】:howtoimplementimplementdeferreddeeplinkinginelectron【发布时间】:2021-01-2623:54:16【问题描述】:试图找到有关如何在电子应用程序中实现延迟深度链接的信息,但在官方电子文档中找不到... 查看详情
如何在 Xamarin 中实现 SfMap
】如何在Xamarin中实现SfMap【英文标题】:HowcanIimplementSfMapinXamarin【发布时间】:2021-10-2514:22:03【问题描述】:如何在基于MVVM结构的项目中实现SfMaps?第一,我必须获取我当前的位置并将其显示在地图上,然后我必须将该标记点... 查看详情