如何更改子类上的变量数据类型
问题描述:
我是子类说例如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?
}
这是可能的某种方式?
答
我不认为你可以直接覆盖它。但是,您可以执行的操作是创建类型的其他属性,但当然会使用不同的名称。该属性可以充当shill并改为设置委托属性。喜欢的东西:
weak var myTableViewDelegate: SomeTableViewDelegate? {
get { return self.delegate as? SomeTableViewDelegate }
set { self.delegate = newValue }
}
如果你想这样做,在一个更清洁的方式(即:不要暴露2个代表属性),或者创建自定义UIView
子类,包含一个UITableView。然后,您可以添加自己的属性delegate
类型和内部它将投入和从表视图委托类型。这样你就不会公开两个委托属性,它们都会改变UITableView上的委托属性。
包含UITableView的自定义子类看起来就像这样做的最佳方式。谢谢,直到现在我还没有想到,我猜想隧道视野 –