【问题标题】:Change the setHighlighted for UIButton更改 UIButton 的 setHighlighted
【发布时间】:2010-12-28 15:54:55
【问题描述】:

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

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

这适用于单元格的初始创建。但是,当单击该项目并显示详细视图时,我将“读取”值切换为“真”并将单元格中 UIButton 的 setHighlighted 选项更改为 false,但从详细信息返回时它不会更改看法。只有当单元格从屏幕上滚动并重新创建时,才会反映更改。导航到详细视图后,如何强制重绘按钮?

【问题讨论】:

  • 你试过setNeedsDisplay而不是setNeedsLayout吗?
  • 是的,两者似乎都不起作用。我假设我在 UIButton 本身上调用它?

标签: iphone cocoa uibutton highlight


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果控件是 突出显示;否则否。

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

    【讨论】:

    • 这是有道理的,尽管上面的解决方案似乎对我有用。我可能会离开它,除非它会在将来给我带来麻烦,因为它适合我的目的。
    猜你喜欢
    • 2023-03-08
    • 2013-10-04
    • 2015-03-03
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多