我有一个tableview
,其中包含使用部分的可扩展和可折叠单元格。您可以在下面看到我的示例代码部分。
class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var mainTableView: UITableView!
var allSections = [AllSections]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let section1 = AllSections(title: "Header 1", rows: ["row 1", "row 2"], isSelected: false)
let section2 = AllSections(title: "Header 2", rows: ["row 1", "row 2", "row 3"], isSelected: false)
let section3 = AllSections(title: "Header 3", rows: ["row 1", "row 2", "row 3", "row 4"], isSelected: false)
allSections.append(section1)
allSections.append(section2)
allSections.append(section3)
let mainTableViewCellNib: UINib = UINib.init(nibName: "MainTableViewCell", bundle: Bundle.main)
mainTableView.register(mainTableViewCellNib, forCellReuseIdentifier: "MainTableViewCell")
}
func numberOfSections(in tableView: UITableView) -> Int {
return allSections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionRow = self.allSections[section]
return sectionRow.rows.count
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionView: SectionView = Bundle.main.loadNibNamed("SectionView", owner: self, options: nil)?[0] as! SectionView
let sectionRow = self.allSections[section]
sectionView.sectionTitleLabel.text = sectionRow.title
sectionView.sectionButtonOutlet.addTarget(self, action: #selector(openRows), for: .touchUpInside)
sectionView.sectionButtonOutlet.tag = section
return sectionView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 61
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier: String = "MainTableViewCell"
let cell: MainTableViewCell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! MainTableViewCell
let sectionRows = self.allSections[indexPath.section]
cell.testLabel.text = sectionRows.rows[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let sectionRows = self.allSections[indexPath.section]
if sectionRows.isSelected {
return 41
}else
{
return 0
}
}
@objc func openRows(sender: UIButton!) {
let section = sender.tag
let sectionRow = self.allSections[section]
sectionRow.isSelected = !sectionRow.isSelected
mainTableView.reloadSections([section], with: UITableViewRowAnimation.automatic)
}
}
输出:
当我长按部分时,是否可以更改所有行的部分顺序,如更改单元格顺序?
我搜索了很多时间,但我找不到任何信息。你能帮帮我吗?谢谢你的建议。