2011-05-13 48 views
0

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

-(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为绿色。

感谢您的帮助!

+0

为什么不改变'UIButton'图像** [返回按钮setImage:[UIImage的imageNamed:@ “wo.png”] forState:UIControlStateNormal]; ** – 2011-05-13 14:32:14

+0

如果我setImage它将取代我的标题或前面的措辞。所以我必须设置为背景。 XD – TonyTakeshi 2011-05-13 14:38:09

+0

最后,我通过手动编码所有UIButton并将其添加到工具栏视图来解决此问题。 – TonyTakeshi 2011-05-19 04:53:23

回答

0

你缺少一个点,

你去指的btnDone对象 - 作为第一个使用你和IBOutlet然后去reffer使用分配给它btnDone = [[UIBarButtonItem alloc] init...] ..你应该做的是编程方式添加它,而不是使用IBOutlet。它会做你的工作。

感谢,

+0

谢谢拉文。基本上我已经创建了带界面生成器的UIBarButtonItem。我正在寻找简单的方法来在界面构建器或代码上对其进行定制,而不是重新编码整个界面。 – TonyTakeshi 2011-05-13 14:41:35

+0

嘿,你不需要在代码中添加更多的东西,只需要把self.navigationItem.rightBarButtonItem = btnDone;只是以编程方式创建它之后。你也需要从xib中移除它。 – Ravin 2011-05-13 15:00:02