通过 prepareForSegue 传递 NSString - Swift

Posted

技术标签:

【中文标题】通过 prepareForSegue 传递 NSString - Swift【英文标题】:Passing NSString via prepareForSegue - Swift 【发布时间】:2014-08-18 15:55:18 【问题描述】:

我正在尝试使用 prepareForSegue 方法将字符串传递给我的模态视图控制器,如下所示。见下文:

这是我的初始视图控制器,我将在其中展示模态视图:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
    
    if segue.identifier == "newProject" 
        var newProjectVC:ModalViewController = ModalViewController()
        newProjectVC = segue.destinationViewController as ModalViewController
        newProjectVC.testString = "hello"
    

这是我的模态视图控制器:

import UIKit

class ModalViewController: UIViewController 
    
    var testString:NSString!
    
    override func viewDidLoad() 
        println(self.testString)
    

这是它在故事板中的样子:

问题是它在这一行抛出异常:

    newProjectVC = segue.destinationViewController as ModalViewController

我感觉这可能与导航控制器有关,但不确定,有什么想法吗?

【问题讨论】:

【参考方案1】:

你说得对,destinationViewController 是导航控制器而不是 ModalViewController,试试看:

let navigationController = segue.destinationViewController as UINavigationController
let newProjectVC = navigationController.topViewController as ModalViewController
newProjectVC.testString = "hello"

【讨论】:

谢谢,但是我现在似乎在这一行再次抛出异常:let newProjectVC = navigationController.viewControllers[0] as NewProjectViewController。 请发布例外情况。 我已经编辑了我的帖子 - 它没有在日志中吐出任何有意义的东西 - 只是坚持上面的行。 查看我编辑的帖子我使用topViewController,如果它会崩溃尝试:navigationController?.topViewController 谢谢,我尝试了你的两个建议,但仍然导致抛出相同类型的异常

以上是关于通过 prepareForSegue 传递 NSString - Swift的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 prepareForSegue 崩溃

在 Swift 2 中通过“prepareForSegue”传递数据

将变量从 tableView 传递给 prepareForSegue?

如何将按钮标签传递给 prepareForSegue

如何使用 prepareForSegue 从二维数组传递值

prepareForSegue 传递索引 0 的值...总是