поэтому я создал пользовательский UIBarButtonItem вне класса и установил его свойства.я добавил его в контроллер навигации отдельным методом, который вызывается из viewDidLoad ().цель для кнопки объявлена внутри самого класса.Я даже пытался добавить точку останова в методе target, чтобы убедиться, что он работает, но, как оказалось, кнопка не достигает цели и выполняет нажатие, несмотря на точки останова.Я сделал весь код программно.
Я попробовал ответы на эти вопросы на stackoverflow, но не сработал.
, когда я объявляю кнопку внутри viewDidLoad, цель распознает кнопку иКнопка также не отображается.
Заранее спасибо, ниже приведен код для того же
// inside class but outside viewDidLoad
let volumeButton = UIBarButtonItem(image: UIImage(named: "speaker"), style: UIBarButtonItem.Style.plain , target: self, action: #selector(volumeButtonTapped(_ :)))
//// inside a custom method which is called from viewDidLoad()
self.navigationItem.leftBarButtonItem = volumeButton
//// below is the target declared inside the class
@objc func volumeButtonTapped(_ sender: Any) {
if volume=="loud"{
volume = "mute"
volumeButton.image = UIImage(named: "mute")
print("volume set to mute")
//UserDefaults.standard.set(volume, forKey: "mute")
}
if volume == "mute"{
volume = "loud"
volumeButton.image = UIImage(named: "speaker")
print("volume set to loud")
//UserDefaults.standard.set(volume, forKey: "speaker")
}
}