我正在使用UILocalizedIndexedCollation和UISearchDisplayController,我喜欢实现一个条件,如果用户没有使用SerachBar,它只应用覆盖功能。
以下是覆盖func tableView以显示排序规则的代码,但如果用户位于搜索栏中,如何绕过此代码?
override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
return self.collation.sectionForSectionIndexTitleAtIndex(index)
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String {
if !self.sections[section].users.isEmpty {
return self.collation.sectionTitles[section] as String
}
return ""
}
displayed to the right of the `UITableView` */
override func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject] {
return self.collation.sectionIndexTitles
}
答案 0 :(得分:1)
您无法有条件地覆盖方法,正常方法是覆盖方法并在不需要覆盖时调用super:
override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
if showingSearch {
return self.collation.sectionForSectionIndexTitleAtIndex(index)
}
else {
return super.tableView(tableView, sectionForSectionIndexTitle:title atIndex:Index)
}
}
答案 1 :(得分:0)
我的代码看起来像这样:
/* section headers appear above each `UITableView` section */
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String {
// do not display empty `Section`s
if self.sections[section].users.isEmpty || tableView == self.searchDisplayController!.searchResultsTableView {
return ""
} else {
return self.collation.sectionTitles[section] as String
}
}
/* section index titles displayed to the right of the `UITableView` */
override func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject] {
if tableView == self.searchDisplayController!.searchResultsTableView {
return tableView.visibleCells()
} else {
return self.collation.sectionIndexTitles
}
}