iOS:更改工具栏按钮项中的png
我在tolbar中加入了一个bar按钮项,并将其设置为png(first.png),当我按下它时,我想在“second.png”中更改它的png 此代码无法正常工作:iOS:更改工具栏按钮项中的png,ios,xcode,png,uibarbuttonitem,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 fo
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];
}
只需在创建按钮后写入以下行:
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];
我不清楚你为什么在那里有一个if块。您不能一次性初始化两个状态映像吗?即
[sender setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateNormal];
[sender setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected];
事实上,如果您不需要以编程方式进行,这可能可以在Interface Builder中完成。当前的回答者没有意识到,
UIBarButtonItem
不是从UIButton继承的,因此setImage:forState:
肯定不起作用。无法为不同的状态设置UIBarButtonims。但是,您可以使用以下内容(在中声明):
由于未捕获的异常“NSInvalidArgumentException”,我有此eror终止应用程序,原因:“-[UIBarButtonim setImage:forState:]:发送到实例0x6a3cc60的未识别选择器”仅为
UIButton
声明了不同的状态。使用自定义view==UIButton
创建UIBarButtonItem
。然后将此方法调用到UIButton
objectI由于未捕获的异常“NSInvalidArgumentException”,导致此eror终止应用程序,原因:'-[uiBarButtonim setImage:forState:::]:未识别的选择器发送到实例0x6a3cc60'通常,您会在视图控制器的viewDidLoad
中进行此类初始化。您是通过什么方法复制代码段的?
sender.image = [UIImage imageNamed:@"first.png"];