一个函数内的swift导航栏设置

时间:2016-05-02 23:24:43

标签: ios swift

我试图在重复功能中处理导航我无法让它工作这是我到目前为止的代码。

static func navigationBarShow()  {

        let navigationCoontroller = UINavigationController()
        navigationCoontroller.navigationBarHidden = false

        navigationCoontroller.navigationBar.barTintColor = UIColor(red:0.4, green:0.76, blue:0.93, alpha:1.0)
        navigationCoontroller.navigationBar.translucent = false
        navigationCoontroller.title = "Signup"

        navigationCoontroller.navigationBar.tintColor = UIColor.whiteColor()
        navigationCoontroller.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]



    }

2 个答案:

答案 0 :(得分:1)

尝试将其编写为UINavigationController的扩展名,并使用self作为导航控制器。每次要显示导航栏时,您都在创建一个新的UINavigationController实例,并且该实例永远不会显示在屏幕上。

extension UINavigationController {

    func showNavigationBar() {

        self.navigationBarHidden = false

        self.navigationBar.barTintColor = UIColor(red:0.4, green:0.76, blue:0.93, alpha:1.0)
        self.navigationBar.translucent = false
        self.title = "Signup"

        self.navigationBar.tintColor = UIColor.whiteColor()
        self.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]


    }

}

然后,在任何UINavigationController中,您都可以致电showNavigationBar()

更新

UIViewController中嵌入UINavigationController的任何子类的代码中,请致电navigationController!.showNavigationBar()

例如:

class MyViewController: UIViewController {

    override func viewDidLoad() {
        self.navigationController!.showNavigationBar()
    }

}

请注意,!假定您的视图控制器嵌入在导航控制器中。如果任何vc未嵌入导航控制器但您想要导航栏,则应考虑将其嵌入导航控制器中。

答案 1 :(得分:1)

这一行:

    let navigationCoontroller = UINavigationController()

每次运行时都会创建一个全新的导航控制器。

除非你发布的代码只运行一次,这是错误的,因为每次调用该函数都会创建一个新的导航控制器