2014-11-05 2 views
0

Я пытаюсь создать свое первое приложение IOSSwift - неожиданно нашел ноль в то время как разворачивание необязательного значения - вызов переменного от делегата

Я получил эту ошибку «неожиданно нашел ноль в то время как разворачивание необязательного значения», когда я пытаюсь доступа к переменным из моего делегата контроллера представления

Я пытаюсь получить прессованную значение ячейки устанавливается в качестве текста метки на моей целевой контроллер

Это первый контроллер

class SearchStationViewController: UITableViewController, writeValueBackDelegate { 
    var selectedStation: String! 
    var fromStationValue: String! = "None" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     selectedStation = stations[indexPath.row].StationName 
     fromStationValue = selectedStation 

     let vc = SelectedStationViewController() 
     vc.fromStationValue = self.fromStationValue 
     vc.delegate = self 

     self.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

И цель контроллер, который я хотел бы это label.text быть изменен

protocol writeValueBackDelegate { 
    var fromStationValue: String! {get set} 
} 

class SelectedStationViewController: UITableViewController { 
    @IBOutlet weak var stationFrom: UILabel! 
    var delegate: writeValueBackDelegate! = nil 
    var fromStationValue: String! = "None" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     stationFrom.text = fromStationValue   
    } 
} 
+2

Какая ошибка * точно *? На ваш вопрос не хватает деталей. Я предполагаю, что вам нужно создать экземпляр своего контроллера просмотра из раскадровки, а не напрямую, а ваш IBOutlet равен нулю. –

+0

Ошибка показывает, что «неожиданно найдено нуль при развертывании необязательного значения», в то время как я пытался установить метку «stationFrom» на новое значение «fromStationValue», извлеченное из первого контроллера представления. Извините за неясность – StereoNight

+0

Я не могу понять вашу иерархию взглядов. Сначала отображается «SearchStationViewController», а затем «SelectedStationViewController» отображается при выборе станции? Теперь, как вы это делаете, делегат/протокол используется для передачи данных из 'SelectedStationViewController' в' SearchStationViewController', а не наоборот. –

ответ

2

Так что я просто сослаться на ответ я дал ранее в этот день: Flappy Bird Coding Error in Swift

Вы должны инициализировать контроллер с соответствующей раскладкой xib oder. Пример:

let storyboard = UIStoryboard(name: "myStoryboardName", bundle: nil); 
let vc = storyboard.instantiateViewControllerWithIdentifier("myVCID") as UIViewController; 

(от Instantiate and Present a viewController in Swift)

В противном случае ваш контроллер представления не будет знать, какие выходы и они будут равны нулю.

Смежные вопросы

 Смежные вопросы