iphone uibutton:我想更改UIControlStateNormal图像

时间:2010-07-12 16:00:57

标签: iphone image uibutton

我创建了一个UIButton的数组。我需要在不同时间以编程方式更改这些按钮上的图像。暂时,为了让它工作,我想在按下按钮时更改图像,但这不是真正发生的时间。

所以,我创建了一个按钮数组,并将它们排列在屏幕上的网格上:

for (UInt16 index=0; index < (mNumColumns * mNumRows); index++)
{ 
    <....Snipped code for setting the x,y,width,height vars...>
    UIButton *thisCell = [UIButton buttonWithType:UIButtonTypeCustom];
    thisCell.tag = index;
    thisCell.frame = CGRectMake(currentX, currentY, cellWidth, cellHeight);  
    [thisCell addTarget:self action:@selector(buttonPushed:)
        forControlEvents:UIControlEventTouchUpInside];
    [thisCell setImage:[UIImage imageNamed:@"cellBackground.png"]
        forState:UIControlStateNormal];
    [[self view] addSubview:thisCell];
}

---然后是按钮处理程序 -

-(void)buttonPushed:(UIView*)clickedButton
{
    NSLog(@"Click %d", clickedButton.tag);
    [clickedButton setImage:[UIImage imageNamed:@"cellEmpty.png"]
        forState:UIControlStateNormal];
    [clickedButton setNeedsDisplay];
}

1)按钮的初始网格正确显示 2)如果我将初始网格的PNG文件名更改为cellEmpty.png,它将与新图像一起使用,因此我知道图像可以显示。
3)我在调试器中看到“Click n”,所以正确的按钮是调用buttonPushed

但是,正如你猜测的那样,图像没有得到更新。我认为此时我不想处理按钮状态....因为图像更改并不真正与按钮在现实生活中得到预设(更改将是通过网络下载新图像的结果)。

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。我需要弄清楚还有其他一些有趣的东西。 创建按钮的视图是标签栏上的框架,如果我将标签栏更改为另一个视图并返回,则图像已更新。

当我弄清楚时,我会更新答案。