0

我有一个带有开关的自定义 UITableViewCell 子类。在子类内的 valueChanged 动作上,我根据开关状态设置单元格的selected属性。

self.selected = self.optionSwitch.isOn

在处理这些单元格的 UITableViewController 中,我向表格视图询问选定的行,但它返回 nil(没有选定的行)。

self.tableView.indexPathsForSelectedRows

如果选择了单元格,为什么它返回 nil?我确定它们是因为我检索了一个来检查选定的属性,它实际上是 YES

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
BOOL isSelected = cell.isSelected;

PS1:我已经设置了我的表格视图的allowsMultipleSelection属性。

PS2:我知道tableView:selectRowAtIndexPath:有效,但我不想为我的自定义单元格创建一个委托只是为了通知表格视图并使表格视图选择该行。

4

2 回答 2

0

如果有人遇到同样的问题,这是我的解决方法:

NSIndexPath *index ;
for( int i=0; i<self.slices.contains.count; i++){
    index = [NSIndexPath indexPathForRow:i inSection:0];
    [self.tableView selectRowAtIndexPath:index animated:NO scrollPosition:UITableViewScrollPositionNone];
}

这将遍历您的表格视图的所有单元格并选择它们(实际上将它们添加到

tableview indexPathsForSelectedRows
于 2014-10-02T11:56:11.513 回答
0

我放弃并使用了PS2中的解决方案。为您的自定义单元格创建一个委托并调用 selectRowMethod。

#pragma mark - CellDelegate

- (void)didSelectCell:(CustomCell *)cell
{
    NSIndexPath *ip = [self.tableView indexPathForCell:cell];
    [self.tableView selectRowAtIndexPath:ip animated:NO  scrollPosition:UITableViewScrollPositionNone];
}

- (void)didDeselectOptionCell:(CustomCell *)cell
{
    NSIndexPath *ip = [self.tableView indexPathForCell:cell];
    [self.tableView deselectRowAtIndexPath:ip animated:NO];
}
于 2013-07-31T13:41:16.203 回答