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

Posted

技术标签:

【中文标题】如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?【英文标题】:How to segue (push) from ViewController to another ViewController embedded in NavigationController? 【发布时间】:2015-08-29 20:31:29 【问题描述】:

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

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

【问题讨论】:

您是否使用故事板 ID 作为目标视图控制器?尝试为导航控制器提供故事板 ID,然后执行您的 segue。 【参考方案1】:

您应该到达导航控制器并从堆栈中获取 topViewController。此代码 sn-p 应该可以工作。

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 中创建一个变量,然后您可以将数据发送到该变量。像这样在你的destinationViewController中创建一个变量;

var journalText: String = ""

现在在您的 prepareForSegue 方法中发送数据。

destinationVC.journalText = "Some string"

【讨论】:

这行得通,但现在当我尝试访问单元格行号时收到一条错误消息。我把let selectedCell = sender as! UITableViewCell“无法将'UITableViewCell'(0x106ea03e8)类型的值转换为'UITableViewCell'(0x106ea03c0)。” 我更新了我的答案。看第二个问题的答案是部分,不要忘记接受我的答案。 这也有效,但现在又出现了另一个错误。 destinationViewController!.journalTextView.text = selectedEntry“致命错误:在展开可选值时意外发现 nil”。如果我更换!和 ?然后没有崩溃,但 textView 没有更新。 更新了我的答案。我回答了你的问题,所以请接受我的回答。

以上是关于如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone Model View Controller 在 ViewController 中分离

如何从模板组件中分离模板(延迟加载模板)

SwiftUI 如何从响应 JSON API 中分离单个数据

ANDROID - 如何从 sqlite 字段中分离 JSONObject 值

如何从共享内存中分离字符串数组? C

如何从以编程方式创建的 UITableView 中分离?