如何更改子类上的变量数据类型
How to change variable data type on Subclass
我正在对 UITableView 进行子类化,我想更改其中一个变量以适合我的协议委托。
@objc protocol SomeTableViewDelegate: class, UITableViewDelegate {
/**
some documentation here
*/
optional func didChangeValue(someTableView: SomeTableViewDelegate)
/**
some documentation here
*/
optional func someDelegateFunction(someTableView: SomeTableViewDelegate)
}
class SomeTableView: UITableView {
override weak var delegate: SomeTableViewDelegate? // basically this is what I want to do
var someProperty: Int = 0
}
我想向 UITableViewDelegate
添加一些实现,但作为另一个协议而不是作为 UITableViewDelegate,因为我在 SomeTableView
上添加了一些其他属性,例如 someProperty
是的,我知道我可以做这样的事情
@objc protocol SomeTableViewDelegate: class {
... some functions here
}
class SomeTableView: UITableView {
override weak var stDelegate: SomeTableViewDelegate?
}
这在某种程度上可能吗?
我认为您不能直接覆盖它。但是,您可以做的是创建一个额外的 属性 类型 SomeTableViewDelegate
,但当然要使用不同的名称。 属性 可以充当托儿,而是设置委托 属性。类似于:
weak var myTableViewDelegate: SomeTableViewDelegate? {
get { return self.delegate as? SomeTableViewDelegate }
set { self.delegate = newValue }
}
如果您想以更简洁的方式执行此操作(即:不要公开 2 个委托属性),或许可以创建一个包含 UITableView 的自定义 UIView
子类。然后,您可以添加自己的 属性,名称为 delegate
,类型为 SomeTableViewDelegate
,并且在内部它会将类型转换为 table 视图委托。这样你就不会公开两个委托属性,它们都改变了 UITableView 上的委托 属性。
我正在对 UITableView 进行子类化,我想更改其中一个变量以适合我的协议委托。
@objc protocol SomeTableViewDelegate: class, UITableViewDelegate {
/**
some documentation here
*/
optional func didChangeValue(someTableView: SomeTableViewDelegate)
/**
some documentation here
*/
optional func someDelegateFunction(someTableView: SomeTableViewDelegate)
}
class SomeTableView: UITableView {
override weak var delegate: SomeTableViewDelegate? // basically this is what I want to do
var someProperty: Int = 0
}
我想向 UITableViewDelegate
添加一些实现,但作为另一个协议而不是作为 UITableViewDelegate,因为我在 SomeTableView
上添加了一些其他属性,例如 someProperty
是的,我知道我可以做这样的事情
@objc protocol SomeTableViewDelegate: class {
... some functions here
}
class SomeTableView: UITableView {
override weak var stDelegate: SomeTableViewDelegate?
}
这在某种程度上可能吗?
我认为您不能直接覆盖它。但是,您可以做的是创建一个额外的 属性 类型 SomeTableViewDelegate
,但当然要使用不同的名称。 属性 可以充当托儿,而是设置委托 属性。类似于:
weak var myTableViewDelegate: SomeTableViewDelegate? {
get { return self.delegate as? SomeTableViewDelegate }
set { self.delegate = newValue }
}
如果您想以更简洁的方式执行此操作(即:不要公开 2 个委托属性),或许可以创建一个包含 UITableView 的自定义 UIView
子类。然后,您可以添加自己的 属性,名称为 delegate
,类型为 SomeTableViewDelegate
,并且在内部它会将类型转换为 table 视图委托。这样你就不会公开两个委托属性,它们都改变了 UITableView 上的委托 属性。