UItableView에서 Cell 정렬을 자주 수행할 수 있습니다.

6224 단어 UITableViewSwiftiOS

개요


사용자가 편집 모드를 선택하지 않아도 언제든지 정렬할 수 있는 UItableView의 구현 노트입니다.

캡처



소스 코드

class ViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.isEditing = true
        tableView.allowsSelectionDuringEditing = true
    }
}

extension ViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = "Item \(indexPath.row)"
        return cell
    }

    func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
        return true
    }

    func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        // TODO: 入れ替え時の処理を実装する(データ制御など)
    }
}

extension ViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        return .none
    }

    func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
        return false
    }
}

주안점

  • viewDidLoadtableView.isEditing = true를 통해 호출
  • canMoveRowAt 또는 moveRowAt일 경우 재배열
  • editingStyleForRowAt 또는 shouldIndentWhileEditingRowAt를 통해 모양새 제어
  • 셀 선택을 가볍게 두드리기 위해viewDidLoad에서 미리 읽기tableView.allowsSelectionDuringEditing = true
  • 위의 편집 모드에서는 Cell 정렬의 TableView를 선택하지 않아도 됩니다.

    좋은 웹페이지 즐겨찾기