Как программно изменить / сбросить NavBarItem без перезагрузки V C? [Swift] - PullRequest
0 голосов
/ 01 мая 2020

Этот сводит меня с ума. Я пытаюсь изменить 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?

...