Как прикрепить подкласс UINavigationController к его UIViewController? - PullRequest
0 голосов
/ 14 января 2019

Я создаю подкласс UINavigationController:

class CustomNavigationViewController: UINavigationController {

    var imageview:UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationBar.setValue(true, forKey: "hidesShadow")
        self.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        self.navigationBar.shadowImage = UIImage()
        self.navigationBar.isTranslucent = true
        self.view.backgroundColor = UIColor.clear

        imageview = UIImageView(frame: CGRect(x: 0, y: -20, width: self.navigationBar.frame.width, height: self.navigationBar.frame.height+20))
        imageview.image = UIImage(named: "navbar")
        self.navigationBar.addSubview(imageview)
    }
 }

В моей раскадровке я установил UINavigationController как CustomNavigationViewController.

enter image description here

При запуске мое изображение в панели навигации отображается правильно.

Но я не знаю, как сделать ссылку на CustomNavigationViewController в моем классе HomeViewController. Мне нужно получить доступ к его переменной imageview.

1 Ответ

0 голосов
/ 14 января 2019

HomeViewController свойство navigationController, уже указывающее на тот же объект, когда HomeViewcontroller помещается в этот CustomNavigationViewController. Просто бросьте его в CustomNavigationViewController

код

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if let customNavigation = self.navigationController as? CustomNavigationViewController {
       // here you got your `customNavigationController`'s object. 
       customNavigation.imageview // access it
    }
}

NB. Не пытайтесь получить доступ к свойству navigationController UIViewController, поскольку в это время он еще не будет удерживать контроллер навигации.

...