通过prepareForSegue传递NSString - Swift

7

我将尝试通过使用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)
    }
}

这是在storyboard中的样子: storyboard 问题在于它在这一行抛出了异常:
    newProjectVC = segue.destinationViewController as ModalViewController

我有一种感觉,这可能与导航控制器有关,但我不确定,你有什么想法吗?
1个回答

13

你是正确的,destinationViewController 应该是导航控制器而不是模态视图控制器,请尝试以下操作:

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

谢谢,但是现在我似乎又在这一行遇到了异常抛出:let newProjectVC = navigationController.viewControllers[0] as NewProjectViewController。 - Ryan
请发布异常。 - Greg
我已经编辑了我的帖子 - 日志中没有输出任何有意义的内容 - 只是停留在上一行。 - Ryan
请查看我的编辑后的帖子,我使用topViewController,如果它崩溃,请尝试:navigationController?.topViewController。 - Greg
谢谢,我尝试了你提供的两个建议,但仍然导致抛出相同类型的异常。 - Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接