gpt4 book ai didi

ios - 停止 tableView.reloadData() 抛出错误?

转载 作者:行者123 更新时间:2023-11-28 11:24:36 31 4
gpt4 key购买 nike

我正在学习一个简单列表应用程序的教程,您可以在其中通过 UITextField 将项目添加到列表中。但是,它在 tableView.reloadData() 处崩溃,我不知道为什么。使 tableView 可选会导致它不会崩溃,但它也会导致应用程序不会将项目添加到列表中。这是类代码:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
struct todo {
var text: String
var isDone: Bool
}

var todos = [todo]()
@IBOutlet var tableView: UITableView!

override func viewDidLoad() {
super.viewDidLoad()
todos.append(todo(text: "test", isDone: false))
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "todo-cell", for: indexPath)
let todo = todos[indexPath.row]
cell.textLabel?.text = todo.text
if todo.isDone {
cell.accessoryType = .checkmark
} else {
cell.accessoryType = .none
}
return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)

var todo = todos[indexPath.row]
todo.isDone = !todo.isDone
todos[indexPath.row] = todo
tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
todos.append(todo(text: textField.text!, isDone: false))
tableView.reloadData() // Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value... crashes here!!
textField.text = ""
textField.resignFirstResponder()
return true
}
}

最佳答案

我的第一个猜测是您没有将 Storyboard中的 tableview 链接到您的 View Controller 。

也许你应该先检查一下。在 viewDidLoad 中打个断点,看看你的 tableview 是否设置好了。如果它为零,那就是你的问题。

关于ios - 停止 tableView.reloadData() 抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58681167/

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