仅编辑UITableView

时间:2016-03-21 14:57:39

标签: ios objective-c uitableview

我正在尝试向UITableView中的第一个单元格添加渐变。

这是我用来确定单元格是否是表中第一个的if语句。

if (indexPath.row == 0 && indexPath.section == 0) {

此代码似乎不起作用,因为有一些具有渐变的单元格,特别是第一个和最后一个单元格,有时还有第二个单元格。这是相当奇怪的,因为我使用indexPath.row在数组中获取的信息是从正确的位置获取信息。

为什么我的if语句不起作用?即使我从数组中的正确位置抓取信息。

3 个答案:

答案 0 :(得分:1)

您可能没有在自定义UITableViewCell子类中实现prepareForReuse。看起来您正确地定位了第一个单元格,因此,当该单元格稍后重用于其他索引路径时,您可能无法清除之前添加的渐变。

答案 1 :(得分:1)

确保您有else条件与if一起使用。因为表视图单元格是重用的,所以如果它位于第一个以外的单元格中,则需要确保删除该渐变。

if(first cell)
   add gradient
else
   remove gradient if it exists

答案 2 :(得分:0)

  1. 如果您正在使用自定义单元格,请将自定义单元格渐变变量设置为清除除第一个单元格以外的所有单元格的颜色。

  2. 如果您正在使用标准的uitableview单元格,请将渐变添加到每个单元格作为默认值,然后如果您的第一个单元格将渐变颜色更改为您需要的任何单元格,并清除颜色为默认值。

  3. 或者像这样分配后,清除单元格中的所有子视图:

    for(UIView * sub in cell.subviews){    [sub removeFromSuperview]; }

  4. 然后为第一个单元格添加渐变。

    选项1是最干净的。