我有一个显示项目的表格。每个单元格都有一个按钮,用于显示有关该项目的其他内容。为了跟踪正在显示的内容(在父视图中使用,因为表格处于模态中),我将按钮设置为选中状态。
我的问题是我想确保一次只选择一个按钮。因此,如果用户点击按钮A,然后点击按钮B,我该如何“取消选择”按钮A?
同样,按钮嵌入在每个单元格中,因此如何迭代每个单元格并禁用按钮(不重新加载表格数据)?
答案 0 :(得分:0)
我猜你保存按钮按下或不按按钮的信息。您必须这样做,因为单元格可以重复使用,因此如果您只将此信息保存在按钮的selected属性中,则在重复使用单元格时它将丢失。
考虑到您在某处保存了所选按钮单元格的索引,您可以使用visibleCells遍历UITableView中的所有可见单元格 方法。对于每个UITableViewCell,如果其索引不是您想要的索引,则禁用该按钮。使用indexPathForCell:检查索引。
你应该做得好。当然,每次dataSource请求一个单元格时,检查indexPath是否被选中,如果是,则将button.selected设置为YES。
答案 1 :(得分:0)
我认为您希望使用UISegementedControls或UISwitches而不是UIButtons。这些其他控件中的任何一个都设置为在用户选择时自动取消选择所有其他选项。它们还提供非常好的方法来了解用户选择的内容,并且可以进行配置,以便每个选项以不同的方式显示,具体取决于它是否是当前所选项目。此外,当更改所选项目时,它们可以触发与外观完全无关的其他代码,并且可以编写代码以不同方式处理每个选项。