从 UITableViewCell 的附件视图中删除视图不起作用

Posted

技术标签:

【中文标题】从 UITableViewCell 的附件视图中删除视图不起作用【英文标题】:Removing view from UITableViewCell's accessoryView not working 【发布时间】:2012-07-27 04:42:04 【问题描述】:

我在单元格的附件视图中设置了带有图像的 uiview,稍后我想删除此视图,以便附件类型可以再次显示为无。以下不起作用 -

  //create cell
        UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];

        //initialize double tick image
        UIImageView *dtick = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dtick.png"]];
        [dtick setFrame:CGRectMake(0,0,20,20)];
        UIView * cellView = [[UIView alloc] initWithFrame:CGRectMake(0,0,20,20)];
        [cellView addSubview:dtick];

 //set accessory type/view of cell
        if (newCell.accessoryType == UITableViewCellAccessoryNone) 
            newCell.accessoryType = UITableViewCellAccessoryCheckmark;
            
        else if(newCell.accessoryType == UITableViewCellAccessoryCheckmark)
                newCell.accessoryType = UITableViewCellAccessoryNone;
                newCell.accessoryView = cellView;
            
        else if (newCell.accessoryView == cellView) 
            newCell.accessoryView = nil;
            newCell.accessoryType = UITableViewCellAccessoryNone;
          

我也尝试过 [newCell.accessoryView reloadInputViews] 但这也不起作用。

基本上我想在单击单元格时循环这些状态 => 无刻度 -> 一个刻度 -> 双刻度(图像)-> 无刻度

非常感谢任何帮助,谢谢。

【问题讨论】:

【参考方案1】:

你的代码有两个问题:

newCell.accessoryView == cellView 中,您将单元格的附件视图与新的 创建的图像视图:这种比较永远不会产生 TRUE。

当你将附件视图设置为你的图像时,你也将类型设置为UITableViewCellAccessoryNone,这样下次它会再次设置为UITableViewCellAccessoryCheckmark。换句话说,第二个else if 块永远不会被执行。

以下代码可以运行(但我自己没有尝试过):

if (newCell.accessoryView != nil) 
     // image --> none
     newCell.accessoryView = nil;
     newCell.accessoryType = UITableViewCellAccessoryNone;
 else if (newCell.accessoryType == UITableViewCellAccessoryNone) 
     // none --> checkmark
     newCell.accessoryType = UITableViewCellAccessoryCheckmark;
 else if (newCell.accessoryType == UITableViewCellAccessoryCheckmark) 
     // checkmark --> image (the type is ignore as soon as a accessory view is set)
     newCell.accessoryView = cellView;

【讨论】:

以上是关于从 UITableViewCell 的附件视图中删除视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

获取 UITableViewCell 详细附件视图的图像

稍后删除 UITableViewCell 的附件视图?

附件视图超出 UITableViewCell 的可见范围

引用同一视图的多个 UITableViewCell 单元格附件视图失败

如何在 UITableViewCell 中获得透明的附件视图? (带截图)

更改 uitableviewcell 中的自定义附件视图?