我正在使用源代码来创建消息传递应用程序.所有的代码都是在没有使用故事板的情况下编写的,我现在想要实现它们.
在源代码中实现的init是这样的:
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方法中,原始代码以这种方式传递自定义init参数:
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 }
然后执行SegueWithIDentifIEr(“ToMessages”,发件人:self)
当我这样做时,我得到了这个致命错误:致命错误:init(编码器:)尚未实现:
从我对原始源代码的研究和理解,原因是因为我没有初始化聊天参数.我意识到我可能没有走上正确的轨道,如果是这样的话,我们将不胜感激.
如果我对正在发生的事情是正确的,那么我的具体问题是如何在prepareForSegue方法中实现参数,例如:
var destinationVC = segue.destinationVIEwController as MessagesVIEwController(chat: chat)解决方法 更改init代码如下
init(chat: Chat) { self.chat = chat super.init() Title = chat.user.name}required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)}
每当通过Storyboard创建UIVIEwController时,都会调用init(编码器:).在您的情况下,调用覆盖,您在其中编写了fatalError()以使其失败,这是您在执行时获得的错误.
总结以上是内存溢出为你收集整理的ios – 通过Swift中的Storyboard Segue传递自定义初始化参数全部内容,希望文章能够帮你解决ios – 通过Swift中的Storyboard Segue传递自定义初始化参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)