gpt4 book ai didi

ios - fatal error : use of unimplemented initializer 'init(coder:)' for class

转载 作者:IT王子 更新时间:2023-10-29 04:55:24 26 4
gpt4 key购买 nike

我决定用 Swift 继续我剩下的项目。当我将自定义类(UIViewcontroller 的子类)添加到 Storyboard View Controller 并加载项目时,应用程序突然崩溃并出现以下错误:

fatal error: use of unimplemented initializer 'init(coder:)' for class

这是一个代码:

import UIKit

class TestViewController: UIViewController {

init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// Custom initialization
}

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

/*
// #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
}

请推荐一些东西

最佳答案

问题

这是由于目标 UIViewController 上缺少初始化程序 init?(coder aDecoder: NSCoder) 造成的。该方法是必需的,因为从 UIStoryboard 实例化 UIViewController 会调用它。

要了解我们如何从 UIStoryboard 初始化 UIViewController,请查看 here

为什么这不是 Objective-C 的问题?

因为 Objective-C 自动继承了所有必需的 UIViewController 初始化器。

为什么 Swift 不自动继承初始化器?

Swift 出于安全考虑,默认情况下不会继承初始化器。但如果所有属性都有值(或可选)并且子类没有定义任何指定的初始化器,它将从父类(super class)继承所有初始化器。


解决方案

1。第一种方法

在目标UIViewController上手动实现init?(coder aDecoder: NSCoder)

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

2。第二种方法

在目标 UIViewController 上删除 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) 将从父类(super class)中继承所有必需的初始化程序作为 戴夫伍德指着他的answer下面


关于ios - fatal error : use of unimplemented initializer 'init(coder:)' for class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com