选择表格视图(作为弹出框)单元格时在图像视图中加载图像
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以上是关于选择表格视图(作为弹出框)单元格时在图像视图中加载图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?