gpt4 book ai didi

swift - 将 header 添加到 TableViewController 中的范围标题(Swift - Xcode)

转载 作者:行者123 更新时间:2023-11-30 11:56:20 26 4
gpt4 key购买 nike

这很难解释,但我如何才能仅将标题添加到范围按钮标题而不是整个 tableviewcontroller?例如,在下面的屏幕截图中,我只希望当我点击“Fun”A.K.A case 2 而不是“All”和“Top 10”时出现标题“Most Interesting Booth”。如果您仍然不确定我在说什么,请发表评论。谢谢!

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()

}

enter image description here enter image description here

最佳答案

我建议这样做,您可以在更新 TableView 时使用枚举来获得更清晰的引用。

创建一个枚举,例如:

enum BoothScope: Int {
case all
case top
case fun
}

添加 BoothScope 变量:

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
}
//...

最后:

(如果您愿意,可以使用委托(delegate)函数 tableView(_ tableView: UITableView,
viewForHeaderInSection 部分: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
}

关于swift - 将 header 添加到 TableViewController 中的范围标题(Swift - Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47770583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com