【问题标题】:How can I set the UITableViewCellAccessory for a chosen row? (iPhone/iPad)如何为所选行设置 UITableViewCellAccessory? (iPhone/iPad)
【发布时间】:2012-01-27 18:20:51
【问题描述】:

我需要一种为任何行设置UITableViewCellAccessory 的方法。但问题是我需要能够在 UITableView 委托方法之外执行此操作。

我试过这个,但它没有显示配件。

[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:1]] setAccessoryType:UITableViewCellAccessoryCheckmark];

如果有什么不同,我在故事板的 IB 中创建了 UITableView。数据是静态的,我使用的是只有一个部分的分组表格样式。

有人可以帮帮我吗?

【问题讨论】:

  • 你能重新加载单元格吗?否则,您可以尝试setNeedsDisplay,但我不太相信它会起作用。

标签: iphone ipad uitableview


【解决方案1】:

如果您的表格视图被滚动,因此有问题的单元格有时可能会滚动出视图然后又回到视图中,您应该只在 UITableView 方法cellForRowAtIndexPath: 中管理该单元格的内容。原因是当重新绘制单元格时,tableview 对象会调用此方法来确保正确呈现可见单元格。 (不可见的单元格根本不需要渲染。)

话虽如此,这是您应该处理单元格内容的地方,即使表格视图不会将相关单元格滚动到视图之外。如果您在使用表格视图时遵循这种设计模式,将会使您的生活变得更轻松。

在该方法中,您可以测试(例如,使用 if 语句)indexPath.section 和 indexPath.row 的值,以便您可以按照自己的方式配置特定单元格。这包括放入配件。

【讨论】:

    【解决方案2】:

    在处理表格视图时始终使用[NSIndexPath indexPathForRow:inSection:]

    【讨论】:

    • 感谢您的评论,我刚刚尝试过,但没有解决问题
    【解决方案3】:

    你可以弄清楚你需要在哪个 indexPath 上打勾,然后使用类似这样的东西

        UITableViewCell * cell = [tableView cellForRowAtIndexPath:someIndexPath];
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    

    【讨论】:

    • 您好,感谢您的建议。但是我相信这和我已经拥有的一样......
    • 是的,有可能即时更改附件类型不起作用(直到有人说他们已经做到了。)我知道像更改编辑附件这样的事情需要跳过箍才能让它生效。
    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多