Этот сводит меня с ума. Я пытаюсь изменить RightBarButton из функции в собственном контроллере представления (Для получения дополнительной информации, это моя структура: TabBarController> Контроллер навигации> Контроллер представления, с уникальным контроллером навигации для каждого контроллера представления в TabBarController)
func setProfileImage(url: String, action: Selector) {
print("Set profile image")
// Reset Profile Image
var barButton = UIBarButtonItem()
let button = UIButton(type: .custom)
let profileImage = UIImageView()
let storage = Storage.storage()
var reference: StorageReference!
reference = storage.reference(forURL: url)
reference.downloadURL { (url, error) in
let data = NSData(contentsOf: url!)
let image = UIImage(data: data! as Data)
profileImage.image = image ?? UIImage(named: "sullyPlaceholder")
button.addTarget(self, action: action, for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 35, height: 35)
button.clipsToBounds = true
button.layer.cornerRadius = 0.5 * button.bounds.size.width
button.layer.borderWidth = 3
button.layer.borderColor = UIColor.lightGray.cgColor
button.setImage(profileImage.image, for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.widthAnchor.constraint(equalToConstant: 35).isActive = true
button.heightAnchor.constraint(equalToConstant: 35).isActive = true
barButton = UIBarButtonItem(customView: button)
self.navigationItem.setRightBarButton(barButton, animated: true)
print("Profile Image Generated")
}
}
Установка изображения в первый раз на viewDidAppear работает отлично, но когда я пытаюсь запустить функцию из действия в том же контроллере представления, она не изменится. Когда я переключаю вкладки и возвращаюсь, кнопка и изображение обновляются. Как обновить / обновить sh элемент навигации из V C?