代码之家  ›  专栏  ›  技术社区  ›  cmii

如何将uinavigationController子类附加到其uiviewController?

  •  0
  • cmii  · 技术社区  · 5 年前

    我创建了一个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

    在运行时,导航栏中的图像显示正确。

    但是,我不知道如何在HomeViewController类中引用CustomNavigationViewController。我需要访问它的IMAGEVIEW变量。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Ratul Sharker    5 年前

    HomeViewController navigationController 属性已指向同一对象 HomeViewcontroller 被推到里面 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
        }
    }
    

    注意:不要试图访问 导航控制器 性质 UIViewController 因为在那个时候它还不能控制导航控制器。