我在viewController中有一个tableView,当我点击一个单元格时,会对嵌入另一个viewController的导航控制器执行push segue。在第一个VC的swift文件中,我在点击一个单元格时触发prepareForSegue
函数,并在该函数中将一些信息传递给第二个viewController中的textView。
但是当我运行我的应用程序时,当我点击一个单元格时出现错误,因为我将目标VC转换为第二个VC而不是navigationController。但是如果我把它作为navigationController转换,那么segue
可以工作,但是我无法将第一个VC中的信息传递给第二个VC中的textView。我在这里错过了什么吗?
您应该到达导航控制器并从堆栈中获取topViewController。这段代码应该可行。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "yourSegueIdentifierIsHere" {
let destinationVC = segue.destinationViewController.navigationController?.topViewController as? YourClass
destinationVC. // do something.
}
}
第二个问题的答案是:
您可以像这样获取indexPath;
let indexPath = tableView.indexPathForSelectedRow
你可以使用yourArray[indexPath.row]
第三个问题的答案是;
您无法在prepareForSegue方法中直接设置textView.text。您应该在destionationViewController中创建一个变量,然后您可以将数据发送到此变量。像你这样在你的destionationViewController中创建一个变量;
var journalText: String = ""
现在在prepareForSegue方法中发送数据。
destinationVC.journalText = "Some string"