点击表格单元格中的UIImageView以显示更大的图像

时间:2010-01-07 11:48:52

标签: iphone image uitableview uiimageview

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

请有人建议采取一种方法。

谢谢, 巴斯卡尔

5 个答案:

答案 0 :(得分:1)

从您的问题中可以看出,您正在使用带有uiimageview的自定义单元格。在这种情况下,无论您在该单元格中的哪个位置,可能位于图像或空白部分中,都会调用didSelectRow atIndexPath方法。更好的方法是使用按钮显示其中任何一个,类似于导航器中的公开按钮。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我会推荐TechZen的方法:您可以添加自定义UIButton并将其放置在单元格中的任何位置,并且自由度很好,但根据我的经验,这些往往会破坏滚动性能。无论对附件视图进行了哪些优化,都可以使用户获得比按钮更好的体验。

答案 3 :(得分:0)

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

我认为你想要像YouTube应用程序那样点击表格单元格显示更大的图像,点击细节公开按钮会带你到图像的元数据。

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

答案 4 :(得分:-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的superview可能是contentView,在这种情况下只是替换如下:

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

注意:请确保您的表视图控制器订阅该通知。