gpt4 book ai didi

swift - 删除在 UITableViewController 中不起作用的行

转载 作者:行者123 更新时间:2023-11-30 10:39:53 25 4
gpt4 key购买 nike

我有一本名为地方的字典,我让 tableViewController 中的每个单元格显示字典的每个部分。我知道删除 Controller 中的行的功能,但是当我运行应用程序并执行删除操作时,什么也没有发生。

// This is my entire TableViewController. I have another ViewController that appends the dictionary.
var places = [Dictionary<String,String>()]

var activePlace = -1

class TableViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

if UserDefaults.standard.object(forKey: "places") != nil { //checks if the list is not empty

places = UserDefaults.standard.object(forKey: "places") as! [Dictionary<String, String>]
}


if places.count == 1 {

places.remove(at: 0)

places.append(["name":"Ex. Eiffel Tower", "lat": "48.858324", "lon": "2.294764"])

}

}

// MARK: - Table view data source

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

override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return places.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

DispatchQueue.main.async {

self.tableView.reloadData()

}

cell.textLabel?.text = places[indexPath.row]["name"]

return cell
}

override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {

activePlace = indexPath.row

return indexPath

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "newPlace" {

activePlace = -1

}

}

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

if editingStyle == .delete {

tableView.deleteRows(at: [indexPath], with: .bottom)

places.remove(at: indexPath.row)

UserDefaults.standard.setValue(places, forKey: "places")

}

}

我期望当我进行向左滑动的操作时,它会从 tableView 中删除该行和单元格的内容。然后它也会从字典中删除。

最佳答案

已解决:

DispatchQueue.main.async 正在创建不断重新加载数据的无限循环。通过删除这两个编辑功能就可以运行了。我能够执行删除操作。

关于swift - 删除在 UITableViewController 中不起作用的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57050392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com