HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 通过Swift中的Storyboard Segue传递自定义初始化参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对自定义初始化程序的概念有些陌生,所以我很难理解我想做什么是可能的.

我正在使用源代码来创建消息传递应用程序.所有的代码都是在没有使用故事板的情况下编写的,我现在想要实现它们.

在源代码中实现的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传递自定义初始化参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。