是否可以实现可扩展的 table header 视图?
Is it possible to achieve expandable table header view?
我已经实现了 table 带有可扩展部分的视图,即用户选择的部分将包含该特定类别的项目数。对于封闭部分,将有 0 个项目。
现在为了更好的 UI 目的,我想实现以下类型的 table 视图,它具有可扩展的 header 视图?在此图像中,我们可以看到该部分看起来像一个包含圆角和边框的项目的组。根据默认 UITableView
,此行为是不可能的。不过,如果有人实施了,请提出一些建议是否可行。
struct WrapperObject {
var header : HeaderObject
var listObject : [ObjectDetail]
}
struct HeaderObject {
var id : String
var isOpen : Bool
}
struct ObjectDetail {
var id : String
var detailInfo : String
}
在您的 VC 或数据源中。创造 :
private var internalData : [WrapperObject]
设置数据后,在UITableView的delegate中
extension ViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// TODO : Custom your own view
// have a callback to set property isOpen = true or false to the internalData.
return UIView()
}
}
extension ViewController : UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return internalData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if internalData[section].header.isOpen {
return internalData[section].listObject.count
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell() // TODO: custom your own cell
}
}
我已经实现了 table 带有可扩展部分的视图,即用户选择的部分将包含该特定类别的项目数。对于封闭部分,将有 0 个项目。
现在为了更好的 UI 目的,我想实现以下类型的 table 视图,它具有可扩展的 header 视图?在此图像中,我们可以看到该部分看起来像一个包含圆角和边框的项目的组。根据默认 UITableView
,此行为是不可能的。不过,如果有人实施了,请提出一些建议是否可行。
struct WrapperObject {
var header : HeaderObject
var listObject : [ObjectDetail]
}
struct HeaderObject {
var id : String
var isOpen : Bool
}
struct ObjectDetail {
var id : String
var detailInfo : String
}
在您的 VC 或数据源中。创造 :
private var internalData : [WrapperObject]
设置数据后,在UITableView的delegate中
extension ViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// TODO : Custom your own view
// have a callback to set property isOpen = true or false to the internalData.
return UIView()
}
}
extension ViewController : UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return internalData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if internalData[section].header.isOpen {
return internalData[section].listObject.count
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell() // TODO: custom your own cell
}
}