【问题标题】:Refreshing Subclassed UITableViewCell刷新子类 UITableViewCell
【发布时间】:2013-06-14 00:18:35
【问题描述】:

我已经在这家呆了几天,但什么都做不了(关于 SO 有一些类似的问题,但没有一个是完全正确/成功的)。

所以,我有一个 UITableView,其单元格是子类化的(实际上是带有子类化 UITableViewCells 的 UITableViews)。从根本上说,该表与本教程中的表类似:www.raywenderlich.com/4680/how-to-make-an-interface-with-horizo​​ntal-tables-like-the-pulse-news-app-part-1

当我选择一个单元格时,我想更改子类单元格的样式(特别是颜色)以表明它已被选中(同样在未选中时)。我不知道如何为子类单元格重新加载数据...我可以操作找到信息(指示是否选择了选定项)的单例数组,以便在下次单击发生时调整单元格。

说明示例(s=选中,u=未选中)

说桌子目前是这样的

|你 |小号 |小号 |你|

现在,我想将所有单元格重置为未选中(所以它们都应该显示为“U”,所以我重置了单例数组。显然表格仍然是相同的。现在,假设我选择了最后一个单元格,这是我得到的(这是正确的):

|你 |你 |你 |小号 |

问题是我希望它在数组重置后但在用户选择另一个单元格之前是这样的:

|你 |你 |你 |你|

抱歉,如果不清楚;我会详细说明可能引起混乱的任何事情。谢谢!

【问题讨论】:

    标签: objective-c uitableview subclassing reloaddata


    【解决方案1】:

    here。基本上,在更新数组的状态后,您需要遍历可见单元格并使用链接中描述的技术之一重新配置或重新加载它们。

    【讨论】:

    • 谢谢,标记为答案,因为它让我朝着正确的方向前进。它在第一次运行时工作,但由于某种原因,子类单元格在第二次返回到它们的最新状态(我正在记录数组并且它肯定被重置)......有什么想法吗?
    • 我不确定我是否理解您的情况,因此如果您能发布相关代码会很有帮助。如果我不得不猜测,我会说您没有在 cellForRowAtIndexPath 中配置您的单元格,因此离开屏幕并重新打开的行正在回收处于错误状态的单元格。
    【解决方案2】:

    cellForRowAtIndexPath 上使用UITableViewCellselectedBackgroundView 属性:

    UIImageView *selBGView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourHighlightedImage.png"]];
     cell.selectedBackgroundView = selBGView;
    

    【讨论】:

    • 我喜欢你的头在哪里,但这无济于事。 “状态”由我的数组决定,虽然您的提议提供了一种不同的方式来做到 (我会考虑将它与数组集成,因为它可能更干净)。无论如何,这 不会 工作,因为在子类实现文件中没有调用 cellForRowAtIndexPath ...如果我可以从我的普通类调用 cellForRowAtIndexPath (reloadData) 它会工作。为了澄清起见,我想在超类中调用非 tableview 相关方法时将所有单元格设置回其原始状态。
    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多