在TableViewController中为标题标题添加标题(Swift - Xcode)

时间:2017-12-12 10:41:29

标签: swift xcode uitableview

这很难解释,但我怎样才能将标题添加到范围按钮标题而不是整个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()

    }

enter image description here enter image description here

1 个答案:

答案 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
}