选择表格视图(作为弹出框)单元格时在图像视图中加载图像

Posted

技术标签:

【中文标题】选择表格视图(作为弹出框)单元格时在图像视图中加载图像【英文标题】:load image in an image view when table view(as popover) cell is selected 【发布时间】:2013-12-06 07:40:57 【问题描述】:

我的故事板应用程序流程如下:

当一个按钮(我称之为“BtnA”)被点击时,它会加载一个表格视图(我称之为“TblA”)。

单击特定单元格后,将在图像视图中加载相应的图像(“ImgA”)。

在图像视图的顶部栏有另一个按钮(让我称之为“BtnB”)。当我点击按钮时(BtnB)一个表格视图(让我称它为 "TblB"),因为 popover 已加载;并且,它的单元格值与之前加载的 tableview("TblA") 单元格(即在我初始按钮单击后加载的 tableview)相同。

现在,我想要的是,选择popover tableview(“tblb”)单元格“)单元格”我想加载我的相应图像(“imga”)回到图像视图。我该怎么做?

注意:.Button("BtnB") 连接到 tableview("TblB") 作为 popover segue。

我指的是这个(load images in an image view from a table in a popover),但是,它似乎有点不同,因为它将 tableview 的单元格图像加载到图像视图。

希望我的问题解释是可以理解的。请帮忙。

【问题讨论】:

您可以使用委托让 TblA 知道何时选择了单元格,并且您可以将任何内容作为参数传递。所以你在 TblB 中创建一个协议,将 TblA 设置为 TblB 的委托,在 TblA 中实现委托方法,当在 TblB 中选择单元格时,调用委托方法。 【参考方案1】:

在这种情况下,您可以使用委托。你可以在 TblB 控制器中创建一个协议

@protocol TblBDelegate <NSObject>
    -(void)didSelectCellWithImage:(UIImage*)image
@end

我在这里传递了图像,但你可以传递任何你需要的东西。

您在 TblB 中创建一个委托属性

@property (nonatomic, assign) id< TblBDelegate> delegate

现在您说您正在呈现带有 segue 的 TblB 弹出窗口。所以在 TblA 中,你实现 prepareForSegue 方法并将 TblA 控制器设置为委托

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([segue.identifier isEqualToString:@"SEGUE NAME"]) 
        TblBController *controller = (TblBController*)[segue destinationViewController];
        controller.delegate = self;
    

现在在您的 TblA 控制器中,您符合协议 TblBDelegate,并实现该方法

@interface TblAController <TblBDelegate>

@end

在你的 .m 文件中

-(void)didSelectCellWithImage:(UIImage*)image

    // Update your imageView with new image

在你的 TblB 控制器中

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    // Get selected image
    // and call your delegate method
    if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectCellWithImage:)]) 
        [self.delegate didSelectCellWithImage:selectedImage]
    

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

【讨论】:

有两点: 1.我的TblB的单元格没有任何图像; 2.我的segue连接是这样的->tableview(TblA)使用segue连接到imageview(ImgA),并且,在图像视图中我有一个按钮可以使用popover segue加载另一个表视图(TblB)。请看你的“- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender" 1.这只是一个例子。你必须返回一些有意义的值,让 TblA 知道选择。你可以把任何东西传回去。 2. tblA 使用 segue 连接到 ImgA 是什么意思?视图控制器与 segues 连接,而不是视图。再一次,你的按钮在哪里并不重要,它是管理按钮所在视图的视图控制器,它将执行 segue。所以在你的情况下,可能你有 UITableViewController 里面有 TblA 。当你按下按钮时,UITableViewController 正在执行 segue

以上是关于选择表格视图(作为弹出框)单元格时在图像视图中加载图像的主要内容,如果未能解决你的问题,请参考以下文章

单击表格视图单元格时加载缓慢

iPad:在屏幕上保留选定的表格视图单元格

如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?

如何在 ipad 中的 tableview 单元格上显示弹出框单击

试图关闭其中包含表格视图的弹出视图控制器

在选择表格视图单元格时更改按钮的标题