【问题标题】:UITableView Selected Row Changes Subview Background ColorUITableView 选定行更改子视图背景颜色
【发布时间】:2014-10-21 12:38:00
【问题描述】:

我有一个带有自定义单元格的 UItableview。当您选择它时,单元格的高度会发生变化并产生扩展效果。但是,当您选择单元格时,所有子视图的背景似乎都变得透明。我尝试设置单元格的 SelectedBackgroundView 但这并不会真正影响单元格子视图。

这里有一些图片:

关闭:

打开: ![在此处输入图片描述][2]

这就是它在 XCode 中的外观或至少在 XCode 中的外观 - (抱歉这里的图片不好)

【问题讨论】:

    标签: ios xcode xamarin.ios xamarin


    【解决方案1】:

    致电[tableView deselectRowAtIndexPath:indexPath animated:YES];didSelectRowAtIndexPath。这应该可以解决您的问题。

    编辑

    如果您根本不想看到任何灰色选择,那么在您的cellForRowAtIndexPath 中,将cell.selectionStyle 设置为UITableViewCellSelectionStyleNone,如下所示:

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    

    【讨论】:

    • 这是一个解决方案;但是,由于某些动画,这似乎不是最好的解决方案。大约有一秒钟左右的时间,单元格在正确显示之前显示无色部分。
    • 然后设置tableView deselectRowAtIndexPath:indexPath animated:NO];
    • 哎呀!我什至没有真正想过要改变它......我实际上认为这是因为我正在调用 beginupdates() 和 endupdates() 这就是原因,但这修复了它
    【解决方案2】:

    假设您为自定义单元格子类化了 UITableViewCell,您可以通过覆盖自定义子类中的 setSelected 方法来修改选择/取消选择单元格的外观。例如:

    - (void) setSelected:(BOOL)selected {
    
        [super setSelected:selected];
        if (selected) {
            //Configure the selected state here
        } else {
            //Configure the deselected state here
        } 
    }
    

    【讨论】:

      【解决方案3】:

      UITableViewCell 出于某种原因在选择时更改所有子视图的背景颜色。

      这可能会有所帮助:

      DVColorLockView

      【讨论】:

        【解决方案4】:

        如果您想要正常的选择行为但想要排除特定的单元格子视图,您可以做一些事情like this 通过子类化并检查它是否在backgroundColor setter 中锁定来锁定背景颜色。

        【讨论】:

          猜你喜欢
          • 2018-06-11
          • 1970-01-01
          • 2016-01-15
          • 2022-01-25
          • 1970-01-01
          • 2014-06-11
          • 1970-01-01
          • 1970-01-01
          • 2020-05-03
          相关资源
          最近更新 更多