我在tableView中有一个UIImageView
,并希望在单击该行时以编程方式删除它。
-(void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for (UIView *subview in tableView)
{
if([subview isKindOfClass:[UIImageView class]])
{
[subview removeFromSuperview];
}
}
}
当我点击表格行时,应用程序崩溃了。 Warning : Collection expression type UIView* may not respond to countByEnumeratingWithState:object:count"
应用程序崩溃提供相同的消息。我错过了什么?我只粘贴了相关的代码部分。
答案 0 :(得分:14)
代码应该像
for (UIView *subview in tableView.subviews)
答案 1 :(得分:0)
将循环更改为
for (UIView *subview in [tableView subviews])
{
if([subview isKindOfClass:[UIImageView class]])
{
[subview removeFromSuperview];
}
}
答案 2 :(得分:0)
尝试以下代码。它可能对你有帮助..
-(void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *cells = [tableView visibleCells];
UITableViewCell *currentCell = nil;
for (UITableViewCell *cell in cells)
{
NSIndexPath *currentIndexPath = [tableView indexPathForCell:cell];
if(currentIndexPath.row == indexPath.row && currentIndexPath.section == indexPath.section)
{
currentCell = cell;
break;
}
}
for(UIView *subView in [[currentCell contentView] subviews])
{
// do your stuff.
}
}