这很难解释,但我怎样才能将标题添加到范围按钮标题而不是整个tableviewcontroller?例如,在下面的屏幕截图中,当我点击“Fun”A.K.A案例2而不是“All”&时,我只想要标题“最有趣的展位”出现。 “前10名”。如果您仍然不确定我在说什么,请发表评论。谢谢!
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
switch selectedScope {
case 0:
postData.removeAll()
postData2.removeAll()
for data in tableDataArray {
postData.append(data.boothName)
let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()
case 1:
postData.removeAll()
postData2.removeAll()
let sortedTableData = tableDataArray.sorted(by: { $0.boothRating > $1.boothRating })
for data in sortedTableData {
postData.append(data.boothName)
let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()
case 2:
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> UIView? {
let view = UIView()
view.backgroundColor = UIColor.orange
return view
}
postData.removeAll()
postData2.removeAll()
let sortedTableData = tableDataArray.sorted(by: { $0.boothRating > $1.boothRating })
for data in sortedTableData {
postData.append(data.boothName)
let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()
default:
break
}
tableView.reloadData()
}
答案 0 :(得分:0)
我建议以这种方式执行此操作,您可以在更新表视图时使用枚举来获得更清晰的引用。
创建枚举,例如:
enum BoothScope: Int {
case all
case top
case fun
}
添加BoothScope var:
var selectedBoothScope: BoothScope = .all
你可以用这种方式管理它:
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
guard selectedBoothScope == BoothScope(rawValue: selectedScope) else { return }
switch selectedBoothScope {
case .all:
//...
case .top:
//...
case .fun:
//remove this:
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> UIView? {
let view = UIView()
view.backgroundColor = UIColor.orange
return view
}
//...
最后:
(如果您愿意,可以使用委托功能tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView?)
func tableView(_ tableView: UITableView,titleForHeaderInSection section: Int) -> String? {
return "yourTitle"
}
func tableView(_ tableView: UITableView,heightForHeaderInSection section: Int) -> CGFloat {
if selectedBoothScope == .fun {
return 30
}
return 0
}