0

我有一个带有自定义附件按钮的 UITableView。When the table cell is selected, the accessory button is placed in a highlighted state. 好吧,这是一件好事。When another cell is selected, causing the first to deselect, the accessory button is not changed back to an unhighlighted state.

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

在此处输入图像描述

我已经尝试过这里建议的解决方案。AccessoryDe​​tailDisclosureButton 在我调用 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;

...
}

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

如何取消突出显示附件按钮?

4

2 回答 2

4

试试这个...

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

whereindexPathToDeselect是之前突出显示的行的索引路径。这将强制重新绘制该行。

于 2013-03-14T16:31:26.783 回答
2

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

于 2013-03-14T16:32:03.117 回答