Передача NSString через prepareForSegue — Swift

Я пытаюсь передать строку моему контроллеру модального представления, показанному ниже, с помощью метода 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

У меня есть ощущение, что это может быть как-то связано с навигационным контроллером, но я не уверен, есть идеи?


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


Ответы (1)


Вы правы, targetViewController - это контроллер навигации, а не 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] as 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