取消选择行后,如何取消UITableView中的附件?

时间:2013-03-14 16:28:06

标签: ios uitableview

我有一个带有自定义配件按钮的UITableView。当选择表格单元格时,附件按钮处于突出显示状态。好的,这是件好事。当选择另一个单元格,导致第一个单元格取消选择时,附件按钮不会变回未突出显示的状态。

这是一个屏幕截图,显示了一个不再被选中的单元格(Rose),但仍然选择了附件按钮。

enter image description here

我已尝试过此处建议的解决方案。 AccessoryDetailDisclosureButton not deselecting after I call deselectRowAtIndexPath它不起作用。我重新加载了表格中的每个单元格,但它仍然没有将附件按钮置于未突出状态。

我已尝试在单元格中明确取消突出显示按钮,包括新选中按钮的选择器和tableView:accessoryButtonTappedForRowWithIndexPath:方法。没有快乐。

以下是创建按钮的代码:

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
...
    UIButton *folderButton = [UIButton buttonWithType: UIButtonTypeCustom];
    folderButton.frame = CGRectMake(0.0, 0.0, 33.0, 33.0);
    [folderButton setImage: [UIImage imageNamed: @"open_document.png"] forState: UIControlStateNormal];
    [folderButton addTarget: self action: @selector(documentButtonAction:) forControlEvents: UIControlEventTouchUpInside];
    [folderButton setTag: [program tag]];
    cell.accessoryView = folderButton;

...
}

到目前为止,我发现的唯一解决方案是将突出显示的按钮图像设置为未突出显示的图像,但这也非常糟糕,因为按钮在点按时不会突出显示。

如何取消高亮显示附件按钮?

2 个答案:

答案 0 :(得分:4)

试试这个......

[tableView reloadRowsAtIndexPaths:@[indexPathToDeselect]
                 withRowAnimation:UITableViewRowAnimationNone];

其中indexPathToDeselect是先前突出显示的行的索引路径。这将强制重绘该行。

答案 1 :(得分:2)

您可以尝试使用委托方法tableView:willDeselectRowAtIndexPath:tableView:didDeselectRowAtIndexPath: 并在那里取消选择您的自定义配件。