【发布时间】:2016-01-28 09:52:51
【问题描述】:
我有两个课程要在我的新课程中使用。第一个实现滑动删除,第二个实现长按手势:
class DeleteItem: UITableViewCell {
}
class OpenDetail: UITableViewCell {
}
由于 Swift 不允许一个类从多个类继承,下面的例子显然是行不通的:
class ItemViewCell: DeleteItem, OpenDetail {
}
因此,为了创建 ItemViewCell 并同时拥有这两个选项,我必须让其中一个类相互继承:
class DeleteItem: UITableViewCell {
}
class OpenDetail: DeleteItem {
}
class ItemViewCell: OpenDetail {
}
问题是,如果我只想要长按手势,我将不得不创建一个新类,而不是从DeleteItem 继承。有更好的方法吗?
【问题讨论】:
-
Yes.
-
@JanGreve:您介意向我展示一个如何使用扩展实现此目的的示例吗?在我的项目中,它给了我一个错误。
-
你不能制作
DeleteItem和OpenDetail协议,而不是类吗? -
唯一的解决方案是子类
OpenDetail添加滑动实现或子类DeleteItem添加长按。这两个类可能都覆盖了相同的方法(例如awakeFromNib)。 -
我不确定我对
protocol的理解是否正确,但协议不是“简单地”对象必须遵守的吗?即:协议中声明的变量/函数在对象中应该是强制性的,以使其符合协议。在那种情况下,我不知道如何使DeleteItem和OpenDetail成为协议,因为它远比这复杂。简单来说,Delete和Open主要是关于手势识别和这个手势的处理(移动表格视图单元格等)。
标签: swift class inheritance