在TableView中长按,在彼此之间移动部分

时间:2017-12-03 17:24:30

标签: ios swift uitableview

我有一个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)

  }

}

输出:

enter image description here

当我长按部分时,是否可以更改所有行的部分顺序,如更改单元格顺序?

我搜索了很多时间,但我找不到任何信息。你能帮帮我吗?谢谢你的建议。

0 个答案:

没有答案