【问题标题】:Passing NSString via prepareForSegue - Swift通过 prepareForSegue 传递 NSString - 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

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

【问题讨论】:

    标签: ios uiviewcontroller swift segue 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
    • 谢谢,我尝试了你的两个建议,但仍然导致抛出相同类型的异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多