ios - 通过 prepareForSegue 传递 NSString - Swift

标签 ios uiviewcontroller swift segue modalviewcontroller

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

这是我的初始 View Controller ,我将在其中呈现模态视图:

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

这是我的模态视图 Controller :

import UIKit

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

这是 Storyboard中的样子:

storyboard

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

    newProjectVC = segue.destinationViewController as ModalViewController

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

最佳答案

你是对的,destinationViewController 是导航 Controller 而不是 ModalViewController,试试看:

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

关于ios - 通过 prepareForSegue 传递 NSString - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367343/

相关文章:

ios - 如何用 Swift 中的另一个 UIViewController 容器覆盖父 UIViewController 中的 UI 元素?

ios - ViewController 关闭 swift ios

ios - 当用户开始输入内容时,如何扩大 UITextView 的大小?

swift - 检查数组是否可编码

iphone - iOS 4 在应用程序处于后台时使用 GPS 定期更新位置

XCode 7 中的 iOS 本地化

ios - Swift 3 中的 CSStickyHeaderFlowLayout

swift - 如何从 UIAlertController 的 UIAlertAction 处理程序中关闭 UIViewController?

Swift 从另一个文件调用完成处理程序失败

ios - 如何修改我的 Storyboard中的 View 以支持 Xcode 中的滚动?