我對自定義初始化器的概念有些陌生,所以我很難理解如果我試圖做什麼是可能的。通過故事板傳遞自定義初始化參數在Swift中陷入
我正在使用源代碼來創建消息應用程序。所有代碼都是在不使用故事板的情況下編寫的,我現在想要實現這些故事板。
,因爲它在源代碼中實現初始化是這樣的:
init(chat: Chat) {
self.chat = chat
super.init(nibName: nil, bundle: nil)
title = chat.user.name
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
在didSelectRowAtIndexPath
方法,原來的代碼通過自定義的初始化參數是這樣的:
let chat = chats[indexPath.row]
let chatViewController = MessagesViewController(chat: chat)
navigationController?.pushViewController(chatViewController, animated: true)
我想什麼這只是簡單地創建一個故事板UIViewController,將該類設置爲原始代碼,即將Storyboard ViewController設置爲:MessagesViewController,然後執行segue。就像這樣:
if segue.identifier == "ToMessages" {
var messagesViewController: MessagesViewController = segue.destinationViewController as MessagesViewController
let chat = chats[indexPath.row]
messagesViewController.chat = chat
}
然後performSegueWithIdentifier("ToMessages", sender: self)
當我這樣做,我得到這個致命的錯誤:fatal error: init(coder:) has not been implemented:
從我的研究和原始源代碼的理解,原因是因爲我沒有初始化參數chat
。我意識到我可能不會走在正確的軌道上,如果是這樣的話,我們將不勝感激。
如果我對什麼事情是正確的,那麼我的具體問題是如何在prepareForSegue方法實現的參數,是這樣的:
var destinationVC = segue.destinationViewController as MessagesViewController(chat: chat)
看來我得到這個錯誤:'屬性self.chat未初始化super.init調用' – YichenBman 2015-03-31 19:29:30