iOS:在栏按钮项中更改png

时间:2011-09-02 13:42:42

标签: ios xcode png uibarbuttonitem

我在一个tolbar中添加了一个bar按钮项目,我用png(first.png)设置它,当我按下它时我想在“second.png”中更改它的png

此代码无效:

UIImage *first = [UIImage imageNamed:@"first.png"];
UIImage *second = [UIImage imageNamed:@"second.png"];

if ([sender isSelected]) 
{  
    [sender setImage:first forState:UIControlStateNormal];  
    [sender setSelected:NO];  

}
else 
{     
    [sender setImage:second forState:UIControlStateSelected]; 
    [sender setSelected:YES];

}

3 个答案:

答案 0 :(得分:4)

当前的回答者没有意识到UIBarButtonItem不会从UIButton继承,因此setImage:forState:肯定会工作。 UIBarButtonItems 不能设置为不同的状态。但可以使用类似的东西(在UIBarItem docs中声明):

sender.image = [UIImage imageNamed:@"first.png"];

答案 1 :(得分:0)

在创建按钮之后写下这一行:

UIImage *first = [UIImage imageNamed:@"first.png"];
UIImage *second = [UIImage imageNamed:@"second.png"];

[sender setImage:first forState:UIControlStateNormal];
[sender setImage:second forState:UIControlStateSelected]; 

您不需要if-else语句。

更新:

CGRect myFrame;
UIButton *myButton = [[UIButton alloc] initWithFrame:myFrame];
[myButton setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected];
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[myButton release];

答案 2 :(得分:0)

我不清楚为什么你有一个if块。你不能将两个状态图像初始化为一次性初始化步骤吗?即。

[sender setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateNormal];  
[sender setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected]; 

实际上,如果您不需要以编程方式执行此操作,则可以在Interface Builder中完成。