如何从ViewController中划分(推送)到NavigationController中嵌入的另一个ViewController?

时间:2015-08-29 20:31:30

标签: ios xcode swift

我在viewController中有一个tableView,当我点击一个单元格时,会对另一个viewController中嵌入的导航控制器执行push segue。在第一个VC的swift文件中,我在点击一个单元格时触发prepareForSegue函数,在该函数中,我将一些信息传递给第二个viewController中的textView。

但是当我运行我的应用程序时,当我点击一个单元格时出现错误,因为我将目标VC转换为第二个VC而不是navigationController。但是,如果我将其转换为navigationController,那么segue可以正常工作,但是我无法将第一个VC中的信息传递给第二个VC中的textView。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您应该到达导航控制器并从堆栈中获取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"