提问人:Rahul Vyas 提问时间:3/30/2023 最后编辑:Rahul Vyas 更新时间:3/30/2023 访问量:49
Swift 自定义回调在第一个实例上不起作用,但在第二个实例上起作用
Swift custom callback is not working on first instance but working on second instance
问:
我有以下自定义UIStackViewComponent
class TitleWithSwitchView: UIStackView {
let title: String
var onSwitchTapped: ((Bool) -> Void)?
override init(frame: CGRect) {
self.title = ""
super.init(frame: frame)
}
required init(coder: NSCoder) {
self.title = ""
super.init(coder: coder)
}
init(title: String) {
self.title = title
super.init(frame: .zero)
setupUI()
setupConstraints()
}
private var label: UILabel {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .white
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.text = "-"
return label
}
private lazy var labelTitle = {
let label = label
label.text = title
return label
}()
private lazy var switchButton = {
let switchButton = UISwitch()
switchButton.translatesAutoresizingMaskIntoConstraints = false
switchButton.addTarget(self, action: #selector(switchTapped), for: .valueChanged)
return switchButton
}()
@objc private func switchTapped() {
onSwitchTapped?(switchButton.isOn)
}
}
我有 2 个相同组件的实例,开关仅在第二个实例上工作。在一审中,什么也没发生
更新:
这就是我使用这个组件的方式。第二个工作得很好,但第一个不起作用
private lazy var stackViewHobbyContainer = {
let stack = TitleWithSwitchView(title: "Some Text")
stack.onSwitchTapped = { [weak self] isOn in
self?.onHobbyContainerSwitchChange(isOn: isOn)
}
return stack
}()
private lazy var stackViewChallengeSwitchView = {
let stack = TitleWithSwitchView(title: "Another Text?")
stack.onSwitchTapped = { [weak self] isOn in
print("Switch tapped \(isOn)")
}
return stack
}()
答: 暂无答案
评论
UILabel
labelTitle
switchButton
switchTapped
print
onSwitchTapped
nil
stackViewHobbyContainer