【问题标题】:Custom UITableViewCell label text doesn't change back on deselect自定义 UITableViewCell 标签文本在取消选择时不会变回
【发布时间】:2013-10-25 20:41:37
【问题描述】:

我有一个UITableViewCell 的自定义子类。我通过设置UILabel的外观代理的一些属性来自定义单元格中包含的标签,如下:

[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].textColor = [UIColor blackColor];
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].highlightedTextColor = [UIColor redColor];

当我在 UI 中选择单元格时,标签的颜色会按预期发生变化,并且代码会推送到下一个视图控制器。但是,当我弹出这个新的视图控制器并使用自定义 UITableViewCells 返回屏幕时,即使我在代码中取消选择单元格,突出显示的文本颜色仍然存在,如下所示:

- (void)viewDidAppear:(BOOL)animated
{
    if ([self.tableView indexPathForSelectedRow]) {
        [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
    }
    [super viewDidAppear:animated];
}

这是 iOS 7 中的错误还是我做错了什么?

【问题讨论】:

    标签: uitableview ios7 uiappearance


    【解决方案1】:

    我不会称它为错误,但有一种方法可以修复它。

    -(void)viewWillDisappear:(BOOL)animated{
    
      [super viewWillDisappear:YES];
    
      if ([self.tableView indexPathForSelectedRow]) {
        [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow]    animated:YES];
      }
    
    }
    

    【讨论】:

      【解决方案2】:

      杰米,我也遇到了同样的情况。我有一个UIView 作为contentViewUITableViewCellUITableViewUIPopoverController 中。如果我在关闭弹出框后重新打开它,选择突出显示将不会清除。

      我确实尝试了这里提到的两种解决方案,但正如你所说的那样,两者都不起作用。在调试时,我意识到UITableView 不知何故丢失了选择,并且没有为indexPathForSelectedRow 返回任何内容。

      很遗憾,我没有找到一个很好的解决方案。我将其称为 iOS 7 错误 UITableView 的行为不像以前和预期的那样。

      我采用的解决方案是更改UIView 的背景颜色,而不是使用UITableView 的选择方法并将其更改回viewWillDisappear 中的默认颜色。

      我全神贯注于阅读更好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多