这是呈现下一个 VC 的代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("dismiss completed")
let user = self.users[indexPath.row]
performSegue(withIdentifier: "toNewMessage", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let indexPath = tableView.indexPathForSelectedRow
var vc = segue.destination as! ChatLogController
vc.user = self.users[(indexPath?.row)!]
}
这就是从之前的 VC 获取数据的变量:
var user: User? {
didSet {
print(user?.name)
chatLogTitleLabel.text = user?.name
}
}
当我尝试设置标签的文本时,它说它发现了一个零值,但是当我打印它时,它是正确的值,而不是零。我该如何修复它?
最佳答案
删除 didSet
并将其设置在 viewDidLoad
chatLogTitleLabel.text = user?.name
问题是这样的
vc.user = self.users[(indexPath?.row)!]
触发设置此时为零的标签,因为所有 socket 都为零,直到加载/呈现 vc
关于swift - Xcode 从另一个 viewController 传递的变量设置标签的文本会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55221369/