更改UIButton的setHighlighted

时间:2010-12-28 15:54:56

标签: iphone cocoa uibutton highlight

我正在使用UIButton来显示和切换表格单元格项目从读取到未读取。 我使用蓝色图像作为背景来显示项目何时未读,并且有效,但认为使用setHighlighted功能会更好,因为它可以节省向App添加额外图像。我使用的代码如下:

- (void)updateReadButton{
    if(article.read.boolValue){
        //[readButton setBackgroundImage:nil forState:UIControlStateNormal];
        [readButton setHighlighted:FALSE];
        [readButton setNeedsLayout];
    } else {
        [readButton setHighlighted:TRUE];
        [readButton setNeedsLayout];        
    }
}

这适用于初始创建单元格。但是当单击该项并显示详细视图时,我将'read'值切换为'true'并将setHighlighted选项更改为单元格中UIButton的false,但是当从详细信息返回时它不会更改视图。仅当单元格滚动离开屏幕并重新创建时才会反映出更改。导航到详细视图后,如何强制重绘按钮?

2 个答案:

答案 0 :(得分:1)

我不认为方法setHighlighted:是正确的。这是文档:

  

如果控件是,则指定YES   突出;否则没有。

     

默认情况下,控件不是   突出显示。 UIControl自动   设置并清除此状态   触摸进入时自动进行   在跟踪期间以及何时退出   是一个修饰。

答案 1 :(得分:1)

您可以通过简单地重新加载相关单元格来完成突出显示。查看UITableView的- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation,并在设置突出显示后使用它重新加载单元格。