如何将文本从单元格传递到另一个View Controller中的textView?

时间:2019-05-11 12:06:14

标签: swift

我有一个字符串数组-[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],它将显示正确的结果。

1 个答案:

答案 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