我有一个字符串数组-[notes]。有两个视图:Notes和NoteDetails。我希望它在用户按下单元格时在NoteDetails ViewController中显示注释文本。
我试图在didSelectRow tableView方法中使用segue来执行此操作,但是xCode给了我一个错误:
“线程1:致命错误:在隐式展开一个Optional值时意外发现nil”。
var notes = ["one", "two", "three"]
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "NoteDetailsViewController") as! NoteDetailsViewController
vc.NoteDetailsOutlet.text = notes[indexPath.row]
self.show(vc, sender: self)
}
如果我在调试控制台中输入po notes[indexPath.row]
,它将显示正确的结果。
答案 0 :(得分:1)
不要在此处传递文本,请在您的NoteDetailsViewController
var passedNote: String = ""
然后在这里使用
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "NoteDetailsViewController") as! NoteDetailsViewController
vc.passedNote = notes[indexPath.row]
self.show(vc, sender: self)
}
在viewDidLoad方法中检查是否已传递数据
override func viewDidLoad() {
super.viewDidLoad()
print(passedNote) // check here you will get data or not then add it to textView
NoteDetailsOutlet.text = passedNote
}
ExtraNote :遵循变量的命名约定应以小写字母开头,例如noteDetailsOutlet
,而不是NoteDetailsOutlet
。