gpt4 book ai didi

ios - 在 tableview 单元格上执行 segue 时出现问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:43:58 25 4
gpt4 key购买 nike

我目前正在学习 Swift 并尝试在用户点击应用程序显示的其中一个 tableview 单元格时执行 segue。目前,每当用户执行此操作时,都会成功加载下一个 View Controller ,但由于某种原因,我似乎无法访问它的任何 UI 元素,因为每次我尝试这样做时,我都会结束收到此错误:

fatal error :在展开可选值时意外发现 nil

错误指向我尝试修改显示在下一个 View Controller 上的其中一个标签的文本的行

这是 didSelectRowAt 函数:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
self.performSegue(withIdentifier: "segue1", sender: self)
}

这是 prepareForSegue 函数:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue1" {
let destinationVC = segue.destination as! UserViewController
let selectedRow = tableView.indexPathForSelectedRow!
let selectedCell = tableView.cellForRow(at: selectedRow) as! CustomCell

destinationVC.usernameLabel.text = selectedCell.userName.text //this is where the error is pointing to
destinationVC.bioLabel.text = selectedCell.bio.text
destinationVC.userImage.image = selectedCell.photo.image

}
}

我不知道是什么导致了这个问题。我的目标是将数据从点击的单元格传递到下一个 View Controller ,但这显然阻止了我这样做。有谁知道我该如何解决这个问题?提前致谢。

最佳答案

注意:我假设userNamebio 都是UITextField

你为什么不尝试这样的事情呢?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue1" {
let destination = segue.destination as! UserViewController
// Use of optional binding to make sure an indexPath exists
if let indexPath = tableView.indexPathForSelectedRow {
let cell = tableView.cellForRow(at: IndexPath(row: indexPath.row, section: indexPath.section)) as! CustomCell
// Notice how we are not directly updating the label as before.
destination.usernameText = cell.userName?.text
destination.bioText = cell.bio?.text
}
}

}

现在在 UserViewController 中:

@IBOutlet weak var usernameLabel: UILabel!
@IBOutlet weak var bioLabel: UILabel!
// What we will be passing the text to instead.
var usernameText: String?
var bioText: String?

override func viewDidLoad() {
super.viewDidLoad()
// update the labels with the text from the proper cell.
usernameLabel?.text = usernameText
bioLabel?.text = bioText
}

你可以对你的图像做同样的事情,只是不同的类型。这与在 prepare(for segue:) 中使用时未分配导出有关。

关于ios - 在 tableview 单元格上执行 segue 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317825/

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