Я озадачен следующей проблемой, я занимался этим несколько дней, и я просто не могу понять asp, где я ошибся.
У меня есть UISWitch, который находится внутри UIView. Этот UIVew является заголовком таблицы.
Мне нужно отключить переключатель на основе критериев, которые я написал в отдельном контроллере представления. Эта часть сделана. У меня возникает проблема: что мне нужно сделать, чтобы получить доступ к элементам в этом представлении, когда я пытаюсь создать его экземпляр?
Вот код INIT внутри класса TableHeader UIView
init(user: User, frame: CGRect) {
self.user = user
super.init(frame: frame)
backgroundColor = .buttonBackgroundColor
addSubview(profileImageView)
profileImageView.anchor(top: topAnchor, left: leftAnchor,
paddingTop: 4, paddingLeft: 12,
width: 64, height: 64)
profileImageView.layer.cornerRadius = 64 / 2
let stack = UIStackView(arrangedSubviews: [fullnameLabel, emailLabel])
stack.distribution = .fillEqually
stack.spacing = 4
stack.axis = .vertical
addSubview(stack)
stack.centerY(inView: profileImageView,
leftAnchor: profileImageView.rightAnchor,
paddingLeft: 12)
if user.status == .online) {
configureSwitch(enabled: true)
} else {
configureSwitch(enabled: false)
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Вот код для переключателя:
lazy var statusSwitch: UISwitch = {
let s = UISwitch()
s.isOn = true
s.tintColor = .white
s.onTintColor = .buttonFontColor
s.addTarget(self, action: #selector(handleStatus), for: .valueChanged)
return s
}()
В моем Home ViewController я пытаюсь создать экземпляр этого UIView, выполнив следующие действия:
private let test = MenuHeader()
test?.statusSwitch.isUserInteractionEnabled = false
Когда я это сделаю, я получите следующую ошибку в строке private let test = MenuHeader()
: Отсутствует аргумент для параметра 'coder' в вызове
Любое понимание того, что я делаю неправильно, сообщите.