2016-10-31 1 views
0

У меня есть 2 ViewControllers, и когда я нахожусь во втором Viewcontroller, я хочу достичь IBOutlet в первом ViewController. Хотя я инстанцирует Я всегда получаю Фатальная ошибка: «неожиданно нашли ноль в то время как разворачивание необязательное значение»Я хочу достичь IBOutlets из другого Viewcontroller в swift, я получаю nil-ошибку

Вот мой код

@IBAction func deleteCompanyPressed(_ sender: AnyObject) { 

    let vc = self.storyboard!.instantiateViewController(withIdentifier: "ReceivedChequeDetailVCID") as! ReceivedChequeDetailVC 
    vc.receivedCompanyOutlet.tintColor = UIColor.darkGray 
    vc.receivedCompanyOutlet.setTitle("Çekin Alındığı Firma/Kişi", for: .normal) 
} 

Ошибка происходит, когда он пытается изменить IBOutlet

+0

проверьте свой ViewControllerIdentifier, если он такой же, как в storyBoard, и попытайтесь не использовать принудительные распаковки. –

+0

Я проверил, это то же имя. Что вы понимаете, не используя разворачивание? @RaduNunu –

+0

Чем я угадываю вашу раскадровку, она равна нулю, попробуйте инициализировать с именем раскадровки, подобным этой UIStoryboard (имя: «YOUR_STORYBOARD_NAME», bundle: NSBundle.mainBundle()). О разворачивании, я не хочу использовать! но если let или guard инструкции для получения значений –

ответ

-1

вас проблема может исходить от 2 точки в коде: - либо self.storyboard не экземпляр, так что ноль - либо ВХ не типа ReceivedChequeDetailVC

Мое решение следующие:

@IBAction func deleteCompanyPressed(_ sender: AnyObject) { 
let vc = self.storyboard?.instantiateViewController(withIdentifier: "ReceivedChequeDetailVCID") as? ReceivedChequeDetailVC 
vc?.receivedCompanyOutlet.tintColor = UIColor.darkGray 
vc?.receivedCompanyOutlet.setTitle("Çekin Alındığı Firma/Kişi", for: .normal)} 
+0

Я попробовал решение, он не кажется, что работает. Я все еще не могу добраться до IBOutlet. Там должно быть что-то еще :(@Ionut –

-1

Как и другие предложения; ваша сила (as!) может скрывать отказ от получения ReceivedChequeDetailVC.

Дополнительно (и это невозможно быть уверенным в том, что вы не представили свою реализацию ReceivedChequeDetailVC или указали, какая строка выбрасывает ваше исключение), если receivedCompanyOutlet является непривязанной силой, это может быть источником вашей проблемы. Похоже, что receivedCompanyOutlet является подвид вашего ReceivedChequeDetailVC's view. Возможно, вы успешно создаете контроллер вида, но не загружаете его представление, а затем пытаетесь получить доступ к отключенному от силы свойству, которое еще не установлено. См. Документацию для view и loadView.

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