gpt4 book ai didi

ios - UITableViewCell 和无法使用类型为 'init' 的参数列表调用 '(coder: NSCoder)'

转载 作者:行者123 更新时间:2023-11-28 07:14:05 25 4
gpt4 key购买 nike

所以我为我的 UITableView 构建了一个自定义单元格类。 Xcode 坚持认为此 UITableViewCell 具有以下初始化程序(Xcode 实际上会自动为我填充此代码):

class customCell: UITableViewCell {

required init(coder aDecoder:NSCoder) {
fatalError("init(coder:) has not been implemented")
}

我修改了这个初始化程序的内容以包含以下内容:

        // fatalError("init(coder:) has not been implemented")
super.init(coder: aDecoder)

如果我删除了关键字 required,那么 Xcode 会抛出一个错误,并希望通过重新输入关键字来纠正我。

所以在我的 UITableView 类中,我尝试像这样注册这个单元格:

override func viewDidLoad(){
super.viewDidLoad()
let coder: NSCoder = NSCoder()
let customCell: AnyClass = customCell(coder: coder)
table?.registerClass(customCell, forCellReuseIdentifier:"cell")

倒数第二行(我用 NSCoder 初始化 customCell 的那一行,正如 Xcode 所希望的那样)产生了错误:

Cannot invoke 'init' with an argument list of type '(coder: NSCoder)'

如果可以的话,我更愿意在没有 NSCoder 的情况下构建我自己的初始化器。

如果我尝试使用任何其他初始化程序,则 Xcode 会按照以下行踢出错误:

Extra argument 'reuseIndenifier' in call

Missing argument in call

它将继续提示,直到我将初始化程序与 NSCoder 一起使用。我被迫使用这个初始化程序。

如果我离这里很远请纠正我,但对我来说我似乎陷入了第 22 条陷阱 - 如果我在没有编码器的情况下构建初始化器,Xcode 会提示,然后当我尝试使用带有编码器它提示我正在使用编码器。

尽管存在这种明显的矛盾,但我相当相信所有这一切都是我在某个地方是个笨蛋的结果。

有没有好心人给我指出正确的方向?

最佳答案

您需要注册 本身而不是它的一个实例。

例如。

tableView?.registerClass(customCell.self, forCellReuseIdentifier:"cell")

需要 init(coder aDecoder:NSCoder) 的问题是一个单独的问题,在这里讨论:'required' initializer 'init(coder:)' must be provided by subclass of 'UITableViewCell'`

关于ios - UITableViewCell 和无法使用类型为 'init' 的参数列表调用 '(coder: NSCoder)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125833/

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