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

问题描述 投票:0回答:1

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

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

ios xcode swift
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.