从swift中的另一个类访问navigationBarController

从swift中的另一个类访问navigationBarController,swift,navigationbar,Swift,Navigationbar,我想从主类HomeController访问MyNavigationBarController.swift类中的导航栏。这是因为我在不同的视图控制器中重用了导航栏,我希望在这一点上减少冗余。在HomeController.swift中集成该功能时,效果良好 但是,当我将导航类设置为单独的类时,启动模拟器时不再显示导航栏 我觉得问题在于自我观点,但我不知道如何解决这个问题 斯威夫特4 斯威夫特家庭控制器 MyNavigationBarController.swift }你是对的。问题在于自我观点。您

我想从主类HomeController访问MyNavigationBarController.swift类中的导航栏。这是因为我在不同的视图控制器中重用了导航栏,我希望在这一点上减少冗余。在HomeController.swift中集成该功能时,效果良好

但是,当我将导航类设置为单独的类时,启动模拟器时不再显示导航栏

我觉得问题在于自我观点,但我不知道如何解决这个问题

斯威夫特4

斯威夫特家庭控制器

MyNavigationBarController.swift


}你是对的。问题在于自我观点。您需要将其添加到控制器的视图中。您可以更改函数,如下所示:

func setNavigationBarInView(_ view:UIView) {
    navBar.translatesAutoresizingMaskIntoConstraints = false
    let navItem = UINavigationItem(title: "")
    let statusItem = UIBarButtonItem(title: "Status", style: .plain, target: self, action: #selector(status))

    navItem.rightBarButtonItem = statusItem

    navBar.setItems([navItem], animated: false)

    view.addSubview(navBar)
}
然后:

myNavigator.setNavigationBarInView(view)
func setNavigationBarInView(_ view:UIView) {
    navBar.translatesAutoresizingMaskIntoConstraints = false
    let navItem = UINavigationItem(title: "")
    let statusItem = UIBarButtonItem(title: "Status", style: .plain, target: self, action: #selector(status))

    navItem.rightBarButtonItem = statusItem

    navBar.setItems([navItem], animated: false)

    view.addSubview(navBar)
}
myNavigator.setNavigationBarInView(view)