问题描述
protocol AllFiltersButtonsprotocol: AnyObject{
func didTapReset()
func didTapApply()
}
class AllFiltersUberResetApplyTableViewCell: UITableViewCell {
var delegate: AllFiltersButtonsprotocol?
var leftButton: UIButton = {
let leftButton = UIButton(.secondary,.large)
leftButton.setTitle("Reset",for: .normal)
leftButton.add(closureFor: .touchUpInside) { [self] in
self.delegate.didTapReset()
}
return leftButton
}()
但是我一直遇到以下错误:
Value of type '(AllFiltersUberResetApplyTableViewCell) -> () -> AllFiltersUberResetApplyTableViewCell' has no member 'delegate
我的代码有什么问题?为什么在明显有成员的情况下说没有成员代表?
解决方法
leftButton
将在UITableViewCell
被完全初始化且self
存在之前被初始化。因此,您不能在self
内使用var leftButton: UIButton
。尝试将其设置为lazy var
,以确保仅在首次访问它时才调用它。
lazy var leftButton: UIButton = {
let leftButton = UIButton(.secondary,.large)
leftButton.setTitle("Reset",for: .normal)
leftButton.add(closureFor: .touchUpInside) { [self] in
self.delegate.didTapReset()
}
return leftButton
}()