1

这可能是一个简单的问题。我有一个 UITableView,每个单元格都包含一个 UIImageView。我想要实现的是

if(is under the editing mode)//Hide UIImageView
if(not in the editing mode)//Show UIImageView

我尝试使用标签来访问那些 UIImageView,但没有运气。我的主要技巧是如何访问这些图像。

你怎么能做到这一点?使用标签?父视图?非常感谢 : )

4

3 回答 3

0

您可以继承 UITableView 并覆盖该方法

- (void)setEditing:(BOOL)editing animated:(BOOL)animated

然后你可以把你的 if else 块放在里面。

PS:不要忘记调用超类的方法

您可以通过设置 image view.eg 的 hidden 属性来隐藏和显示图像。

imageView.hidden = YES;

您可以在头文件中定义图像,然后可以在类的每个方法中访问它们。

于 2013-01-16T15:35:33.677 回答
0

cellForRowAtIndexPath您可以在正在编辑的条件下隐藏图像视图。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...

    if (self.editing)
      imageView.hidden = YES;

...
}

然后在设置编辑时重新加载表格视图:

-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{ 
    [super setEditing:editing animated:animated];

    [self.tableView reloadData];
}

如果我正确理解您的问题,您希望访问所有 tableView 单元格并隐藏 imageView。但这是不可能的,因为您的单元格(如果正确实施)被重用,因此单元格的数量可能少于表格视图中的行数。

这就是为什么您需要在 中设置有关单元格外观的所有内容cellForRowAtIndexPath

于 2013-01-16T16:04:11.967 回答
0

在尝试了其他方法之后,我使用 viewWithTag 方法并且它正在工作:) 基本上,我从 100 开始标记,因为我知道在我的情况下,一页中不超过 20 个视图。

在我的 cellForRowAtIndexPath 函数中

UIImageView *checkMark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkMark.png"]];
checkMark.frame = CGRectMake(xx, xx, xx, xx);
checkMark.hidden = YES;
checkMark.tag = indexPath.row + 100;

然后我可以使用

for (int i = 100; i < [self.vehiclesArray count] + 100; i++) {
   ((UIImageView *)[self.view viewWithTag:i]).hidden = NO;
}
于 2013-01-16T16:38:05.587 回答