【问题标题】:How to change background image of UIBarButtonItem create with interface builder如何更改使用界面生成器创建的 UIBarButtonItem 的背景图像
【发布时间】:2011-05-13 22:39:55
【问题描述】:

我使用界面生成器创建了一些 UIBarButtonItem 并尝试将按钮自定义为绿色。虽然我找不到更改按钮背景颜色的方法,但我决定以这种方式编写代码: IBOutlet UIBarButtonItem *btnDone;

-(void)viewDidLoad {
    [super viewDidLoad];

    UIImage *buttonImage = [[UIImage imageNamed:@"btnGreen.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [doneButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
    [doneButton setTitle:@"Done" forState:UIControlStateNormal];    
    [doneButton addTarget:self action:@selector(saveDateEdit:) forControlEvents:UIControlEventTouchUpInside];
    [doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];
    doneButton.frame = CGRectMake(0.0, 0.0, 50, 30);
    btnDone = [[UIBarButtonItem alloc] initWithCustomView:doneButton];
    [doneButton release];
}

我创建 IBOutlet 并从界面构建器链接到按钮,同时我尝试在首次加载期间覆盖它。但是,它显示的是默认按钮。

想知道为什么会这样吗?或者更好的人可以建议我将 UIBarButtonItem 更改为绿色的更好方法。

感谢您的帮助!

【问题讨论】:

  • 为什么不改变UIButton图像[backButton setImage:[UIImage imageNamed:@"wo.png"] forState:UIControlStateNormal];
  • 如果我 setImage 它将替换我前面的标题或措辞。所以我必须设置为背景。 XD
  • 最后,我通过手动编码所有 UIButton 并将其添加到工具栏视图来解决这个问题。

标签: iphone objective-c


【解决方案1】:

你少了一分,

您正在取消引用 btnDone 对象-首先您使用 IBOutlet 分配它,然后使用 btnDone = [[UIBarButtonItem alloc] init...] 取消引用。您应该以编程方式添加它,而不是使用 IBOutlet .它会做你的工作。

谢谢,

【讨论】:

  • 谢谢拉文。基本上我已经使用界面生成器创建了 UIBarButtonItem。我正在寻找简单的方法来在界面构建器或代码上对其进行自定义,而不是重新编码整个界面。
  • 嘿,您无需在代码中添加更多内容,只需将 self.navigationItem.rightBarButtonItem = btnDone;就在以编程方式创建它之后。您还需要将其从 xib 中删除。
猜你喜欢
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多