Переупорядочение ячеек в UITableView вынимает функциональность ячеек в Swift? - PullRequest
0 голосов
/ 19 апреля 2020

Я использую JSON для анализа данных из Spotify и добавления песен в UITableView. Песни воспроизводятся нормально, и я добавил функциональность для удаления ячеек, но при добавлении функциональности для перезаписи я не могу воспроизводить песни и тоже не могу их удалить. Любые идеи были бы хорошы.

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.



    self.tableView.isEditing = true


    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return posts.count

}

Добавляет изображение альбома и название песни в TableView.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
    let mainImageView = cell?.viewWithTag(2) as! UIImageView
    mainImageView.image = posts[indexPath.row].mainImage
    let mainLabel = cell?.viewWithTag(1) as! UILabel
    mainLabel.text = posts[indexPath.row].name
    return cell!
}

Это добавляет пролистывание для удаления функциональности.

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        posts.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
    } else if editingStyle == .insert {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
    }
}

override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
    return .none
}

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

Это добавляет функциональность переупорядочения.

override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    let movedObject = self.posts[sourceIndexPath.row]
    posts.remove(at: sourceIndexPath.row)
    posts.insert(movedObject, at: destinationIndexPath.row)
    debugPrint("\(sourceIndexPath.row) => \(destinationIndexPath.row)")
    self.tableView.reloadData()
}

1 Ответ

0 голосов
/ 19 апреля 2020

Вы не хотите устанавливать

self.tableView.isEditing = true

в viewDidLoad. Это выведет вас из «нормального» режима, в котором вы можете выбрать ячейку или другие элементы в ячейке. Настройка self.tableview.isEditing эквивалентна нажатию кнопки редактирования в верхнем правом углу многих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...