let rightBarBtn = UIBarButtonItem(title: "Light", style: .plain, target: self, action: #selector(rightBarBtnAction))
self.navigationItem.rightBarButtonItem = rightBarBtn
}
@objc func rightBarBtnAction(sender: UIBarButtonItem) {
if theme == .dark {
sender.title = "Dark"
theme = .light
Style.themeLight()
} else {
sender.title = "Light"
theme = .dark
Style.themeDark()
}
self.view.backgroundColor = Style.bgColor
calenderView.changeTheme()
}
Это был фрагмент кода, отвечающий за переключение между двумя темами в моем календаре, и я хотел переключить UIBarButton на UIButton, чтобы изменить его положение на экране.
Это то, что я придумал до сих пор:
let themeSwitch = UIButton()
themeSwitch.setTitle("Light", for: .normal)
themeSwitch.backgroundColor = .darkGray
themeSwitch.addTarget(self, action: #selector(themeSwitchAction), for: .touchUpInside)
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
calenderView.myCollectionView.collectionViewLayout.invalidateLayout()
}
@objc func themeSwitchAction(sender: UIButton) {
if theme == .dark {
sender.currentTitle = "Dark"
theme = .light
Style.themeLight()
} else {
sender.currentTitle = "light"
theme = .dark
Style.themeDark()
}
self.view.backgroundColor = Style.bgColor
calenderView.changeTheme()
}
Как вы, вероятно, можете сказать, это не работает. Может кто-нибудь, пожалуйста, покажите мне способ сделать это правильно?