在UITableView处于编辑模式时更改图像隐藏状态

时间:2013-01-16 15:30:39

标签: iphone ios uitableview

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

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

我尝试使用tag访问那些UIImageView,但没有运气。对我而言,主要的诀窍是如何访问这些图像。

你怎么做?使用标签?父视图? 非常感谢:)

3 个答案:

答案 0 :(得分:0)

您可以继承UITableView并覆盖方法

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

然后你可以将你的if else块放入其中。

PS:别忘了调用超类方法

您可以通过设置图像view.eg。

的隐藏属性来隐藏和显示图像
imageView.hidden = YES;

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

答案 1 :(得分: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中设置有关单元格外观的所有内容。

答案 2 :(得分: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;
}