我正在创建一个带有导航栏的ViewController。在这个栏中,我添加了一个UIBarButton,在这个UIBarButton上我将附加一个segue以转到另一个ViewController。
我希望这个按钮是一个图像,而不是简单的文本,所以我尝试去属性检查器部分和我的按钮的图像。结果很糟糕:
ios - 在StoryBoard中为UIBarButton显示图像而不是文本-LMLPHP
正如你在这一点上所想的,我想要一个正确的图像(像一个小一些的,我的在xcasts下,25px的高度和宽度)。
我通过使用以下工具,以编程方式获得了更好的结果:

hpSettingsBtn.image = UIImage(named: "settings")

但仍然不是我想要的。
知道吗?
我也尝试了使用自定义视图的功能,但是我的按钮不再是可点击的。
class HomePageViewController: UIViewController {
    @IBOutlet weak var hpSettingsBtn: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()
        let button = createSettingsBtn()
        hpSettingsBtn.customView = button
    }

    func createSettingsBtn() -> UIButton {
        //create a new button
        let button = UIButton(type: .custom)
        //set image for button
        button.setImage(UIImage(named: "settings"), for: .normal)
        //set frame
        button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)

        button.widthAnchor.constraint(equalToConstant: 25).isActive = true
        button.heightAnchor.constraint(equalToConstant: 25).isActive = true

        return button
    }

如果我使用这个代码,没有UIBarButton(通过在我的代码中创建它并自己将它附加到导航栏),那么我不知道是否可以使用segue(因为按钮不出现在故事板上)。

最佳答案

首先创建从第一viewController到第二viewController的segue,并将标识符设置到该segue。

eg : segue1 //segue identifier

然后创建自定义按钮
func makeSettingsBtn() {
    //create a new button
    let button = UIButton(type: .custom)
    //set image for button
    button.setImage(UIImage(named: "settings"), for: .normal)
    //set frame
    button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)

    button.widthAnchor.constraint(equalToConstant: 25).isActive = true
    button.heightAnchor.constraint(equalToConstant: 25).isActive = true

    //Add target
    button.addTarget(self, action: #selector(self.btnClick(_:)), for: .touchUpInside)

    let barButton = UIBarButtonItem(customView: button)
    self.navigationItem.rightBarButtonItem = barButton
}

按钮动作法
@objc func btnClick(_ sender:UIButton) {
    self.performSegueWithIdentifier("segue1", sender: self)
}

关于ios - 在StoryBoard中为UIBarButton显示图像而不是文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53745731/

10-12 03:35