我在一个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];
}
答案 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中完成。