Предаване на NSString чрез подготвитеForSegue - Swift

Опитвам се да предам низ към моя контролер за модален изглед, показан по-долу, като използвам метода pripraveForSegue. Виж отдолу:

Ето моят контролер за първоначален изглед, където ще представя модалния изглед:

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

Имам чувството, че може да е нещо общо с навигационния контролер, но не съм сигурен, някакви идеи?


person Ryan    schedule 18.08.2014    source източник


Отговори (1)


Прав сте, дестинациятаViewController е навигационен контролер, а не ModalViewController, опитайте това:

let navigationController = segue.destinationViewController as UINavigationController
let newProjectVC = navigationController.topViewController as ModalViewController
newProjectVC.testString = "hello"
person Greg    schedule 18.08.2014
comment
Благодаря, но изглежда, че сега отново получавам изключение на този ред: let newProjectVC = navigationController.viewControllers[0] като NewProjectViewController. - person Ryan; 18.08.2014
comment
Моля, публикувайте изключението. - person Greg; 18.08.2014
comment
Редактирах публикацията си - тя не изплюва нищо смислено в дневника - просто се придържа към реда по-горе. - person Ryan; 18.08.2014
comment
Вижте моя редактиран пост. Използвам topViewController, ако ще смаже, опитайте: navigationController?.topViewController - person Greg; 18.08.2014
comment
Благодаря, изпробвах и двете ви предложения, но все още води до хвърлено изключение от същия тип - person Ryan; 18.08.2014