这可能是一个简单的问题。我有一个 UITableView,每个单元格都包含一个 UIImageView。我想要实现的是
if(is under the editing mode)//Hide UIImageView
if(not in the editing mode)//Show UIImageView
我尝试使用标签来访问那些 UIImageView,但没有运气。我的主要技巧是如何访问这些图像。
你怎么能做到这一点?使用标签?父视图?非常感谢 : )
这可能是一个简单的问题。我有一个 UITableView,每个单元格都包含一个 UIImageView。我想要实现的是
if(is under the editing mode)//Hide UIImageView
if(not in the editing mode)//Show UIImageView
我尝试使用标签来访问那些 UIImageView,但没有运气。我的主要技巧是如何访问这些图像。
你怎么能做到这一点?使用标签?父视图?非常感谢 : )
您可以继承 UITableView 并覆盖该方法
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
然后你可以把你的 if else 块放在里面。
PS:不要忘记调用超类的方法
您可以通过设置 image view.eg 的 hidden 属性来隐藏和显示图像。
imageView.hidden = YES;
您可以在头文件中定义图像,然后可以在类的每个方法中访问它们。
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
。
在尝试了其他方法之后,我使用 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;
}