2010-01-07 55 views
1

我正在编写一个应用程序,我需要在每个表格单元格上显示缩略图图像,当缩略图图像被录像时,应该用较大的图像推送新视图。所以在单个单元格上应该有两个触摸事件,一个用于图像,另一个用于显示详细视图。默认情况下,在didSelectRowAtIndexPath我正在调用详细视图工作正常。点击表格单元格中的UIImageView以显示较大的图像

有人可以提出一个方法,请。

感谢, 巴斯卡尔

回答

1

最简单的方法是将缩略图添加到按钮中作为单元的附件视图。当按钮被击中时,它会调用可以加载下一个视图的附件视图方法。

1

从你的问题,据了解,您有在它的UIImageView的自定义单元格。在这种情况下,无论您在哪个单元格中点击,都可能位于图像或空白部分中,则会调用didSelectRow atIndexPath方法。更好的方法是使用按钮来显示它们中的任何一个,类似于导航器中的按钮。

0

我会推荐TechZen的方法:你可以添加一个自定义的UIButton,并将它放置在任何你喜欢的单元格中,并且这种自由很好,但是根据我的经验,这些往往会导致滚动性能的下降。无论对配件视图进行哪种优化,都可能使它们成为用户比按钮更好的体验。

0

我同意亚历克斯。更多信息:这是“细节披露按钮”附件视图适用于表格行的内容。有关此示例,请参阅电话应用程序中的收藏夹选项卡。点击连线即可呼叫该人员,但点击右边的蓝色圆形按钮即可转至该人员联系信息的详细视图。另一个例子是YouTube应用程序。

我想你想要的东西就像YouTube应用程序那样在表格单元上点击会显示一个更大的图像,然后点按详细信息显示按钮会显示关于图像的元数据。

有关如何添加详细信息披露按钮,请参阅UITableViewCell的文档。这很简单。

-1

既然我们知道图像是在一个单元格中,而且我讨厌子类化,我们可以将一些有趣的黑客入侵。你可以只使用cell.imageView财产折腾上的UIImageView类别:表视图控制器

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 

    if([self.superview isKindOfClass:[UITableViewCell class]]){ 

     if([touches anyObject].tapCount == 1){ 

      //Image was tapped, issue notification, we use the cell as the object 
      [[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview] 
      //just return after the notification 
      return; 
     } 
    } 
    //if it wasn't a tap, just forward the touch 
    [super touchesEnded:touches withEvent:event]; 
} 

然后,您可以通过解析选定单元格:

NSIndexPath indexOfSelectedCellImage = [self.tableview indexPathForCell:[notificaton object]]; 

我没有检查,但cell.imageView的上海华可能是内容查看,在这种情况下,在以下刚刚替补:

…if([self.superview.superview isKindOfClass:[UITableViewCell class]])… 
…[[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview.superview]… 

注:请确保您的表视图控制器订阅notific通货膨胀。

相关问题