是否可以更改viewDidLoad / viewWillAppear之外的导航栏按钮?迅速

时间:2017-09-21 01:48:13

标签: ios iphone swift

我想更改navigationItem项目按钮的图像。

点击另一个按钮更改navigationItem UINavigationBar

中此按钮项的图像

1 个答案:

答案 0 :(得分:-1)

我想你的意思是如何在导航栏中动态更改按钮的图像,对吗?

如果是这样,我认为标题可能有点误导,正如其他人指出的那样,您可以通过发布代码的某些部分或者您尝试过的方式来表明您做了一些研究。

无论如何,假设您想要更改导航栏的外观,使其在应用程序的任何位置看起来都一样。然后,您可以使用UINavigationBar()访问(在您的appDelegate' didFinishLaunch方法中)导航栏,并设置其属性以满足您的需求。

现在,如果您想为每个视图控制器自定义导航栏,或者在某个位置更改某个导航栏按钮的图像,那么我担心您实际上需要编写您的viewDidLoad(或viewWillAppear)中的代码。

这样做的一种方法是:

 override func viewDidLoad() {
        super.viewDidLoad()

        // ...

        // Create your button:

        let button = UIButton(type:.custom)

        // Create your image:

        let buttonImage = UIImage(named: "yourImageNameHere")

        // Set your button image:

        button.setImage(buttonImage, for: .normal)

        // Set its frame:

        button.frame = CGRect(x:0, y:0, width:30, height:30)

        // Add a target to it if you need:

        button.addTarget(self, action: #selector(yourMethodGoesHere), for: .touchUpInside)

        // Create the bar button using your custom button:

        let barButton = UIBarButtonItem(customView: button)

        // Add the bar button to your navigation bar:

        navigationItem.rightBarButtonItem = barButton

        // ...
    }