在调用deselectRowAtIndexPath后,AccessoryDe​​tailDisclosureButton没有取消选择

时间:2010-02-05 03:23:54

标签: iphone uitableview

在我的tableview中,我有多行具有公开详细信息按钮附件类型,当按下行或附件时,新视图被推送到导航控制器。我在didSelectRowAtIndexPath函数的末尾调用deselectRowAtIndexPath。

如果我按下附件按钮,我会转到一个新视图,但当我回到此视图(弹出)时它仍然会突出显示。按预期取消选择该行,但不是这样。关于如何“不突出”它的任何想法?

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    }
    - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
     [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
     [self tableView:tableView didSelectRowAtIndexPath:indexPath];
    }

2 个答案:

答案 0 :(得分:3)

对于那些仍然对此感到困扰并想要一个似乎现在正常工作的解决方案的人,请试试这个:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

}

您必须首先重新加载数据,然后选择该行,以便突出显示在您的操作表选项下方。

答案 1 :(得分:1)

只需从

中删除即可
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;

方法声明

[tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];

由于您的表已经允许选择,并且您正在

中正确地取消选择它
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

您已完成,因为按下公开按钮选中时会突出显示该行,并在执行tableView:didSelectRowAtIndexPath:时取消选择。