【问题标题】:Cant set image for UIBarButtonItem无法为 UIBarButtonItem 设置图像
【发布时间】:2012-06-30 12:25:59
【问题描述】:

我正在尝试为我的 UIBarButtonItem 设置图像,但我无法做到。我尝试了两次,在第一种情况下,我将图像放在正确的位置,但是当我单击按钮时没有任何反应(它应该弹出一个新窗口,但没有任何效果)。有一段我用过的代码:

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"];
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
    face.bounds = CGRectMake( 0, 0, faceImage.size.width, faceImage.size.height );
    [face setImage:faceImage forState:UIControlStateNormal];
   UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)];

    self.navigationItem.leftBarButtonItem = faceBtn;

在第二种情况下,我在按钮上设置了图像,新窗口按原样出现,但不仅有我想要的自定义图像,而且还显示“边框”,看起来图像默认居中按钮。显然,我只想要我的形象,而不是边界,只想要我的形象。我在第二种情况下使用了一段代码:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)];

    self.navigationItem.leftBarButtonItem = addButton;

请帮我解决问题,任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: ios objective-c iphone uitableview uibarbuttonitem


    【解决方案1】:

    试试这个...根据你改变它的方法,图像

    UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom];
    [button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)];
    [button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside];
    [button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal];
    UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1];
    self.navigationItem.leftBarButtonItem = button;
    

    【讨论】:

    • barButtonItemClass 是未声明的标识符 :(
    • 哦!我写错了...现在我已经编辑了请检查:-)
    • 是的,它的工作原理!非常感谢你!我欠你太多了:))
    【解决方案2】:

    或者...只需编写两行 iOS 8 Swift 代码。 (甚至可能在 iOS 7 中工作)

        let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed")
        navigationItem.leftBarButtonItem = doneButtonAsLeftArrow
    

    【讨论】:

      【解决方案3】:

      我已经修改了您的代码并测试了 barbutton 中显示的图像。请自行尝试。如果您在这方面遇到任何问题,请告诉我。

          UIImage *faceImage = [UIImage imageNamed:@"Badge.png"];
          UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
          face.bounds = CGRectMake( 0, 0, faceImage.size.width, faceImage.size.height );
          [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside];
          [face setImage:faceImage forState:UIControlStateNormal];
          UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];    
          self.navigationItem.leftBarButtonItem = faceBtn;
      

      编辑:我在答案中添加了一行。我刚刚在日志中打印了一条消息“嗨”。这是工作。可以试试吗?

      谢谢。

      【讨论】:

      • Yuvaraj 我非常感谢你所做的,但我希望你提到我使用“action:@selector(addProduct:)”来调用我的第二个窗口。显然它不叫
      • Yuvaraj.M 感谢一切正常!我刚刚从您和下面的人那里得到了 2 个正确答案,我很高兴我解决了这个问题!请接受我的祝福! :)
      【解决方案4】:

      任何人都接受的答案的 Swift 版本

      var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
      settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36))
      settingsButton.setImage(image, forState: UIControlState.Normal)
      settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside)
      
      let rightBarButtonItem = UIBarButtonItem(customView: settingsButton)
      navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true)
      

      【讨论】:

        【解决方案5】:
        UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)];
        
            self.navigationItem.leftBarButtonItem = addButton;
        

        你正在创建一个默认按钮,你需要创建一个UIButtonTypeCustom类型的按钮...

        【讨论】:

        • 谢谢,我明白这一点,但无法解决问题:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多