【发布时间】:2023-02-18 16:07:00
【问题描述】:
我有一个自定义的UICollectionViewCell,我在整个项目的两个地方使用它。
两个UICollectionViewCell除了显示UIButton之外是相同的。为了减少代码重复,我想在两个地方都使用单元格,但用一个布尔值初始化一个,以确定是否显示按钮。
我相信我需要一个便利的初始值设定项来执行此操作,但是,我收到了错误;
在“self.init”调用或赋值给“self”之前使用“self”
代码:
class MediaSelectionCell: UICollectionViewCell { var withDeleteButton = false convenience init(showsDeleteButton: Bool) { self.init(showsDeleteButton: withDeleteButton) } override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }我该如何解决这个问题?
【问题讨论】:
-
单元格被重复使用,并且无需您的方法即可调用。相反,在 cellForRow 中,将 didSet 添加到
withDeleteButton以隐藏/显示按钮。 -
@Larme 单元格用于应用程序的不同部分,要么所有单元格都有按钮,要么没有,所以我认为 didSet 在这里并不是很有用。除非我遗漏了什么。
-
@DavidHenry - 你不能那样初始化单元格。您要么需要设置隐藏在
cellForItemAt中的按钮,要么创建两个单元格类(子类化“基本”单元格可能是使用该方法的方法)。
标签: ios swift xcode initialization uicollectionviewcell