我正在尝试创建一个可重用的组件以显示一些照片集。
基本流程如下:


第一个视图:View。它包含我所谓的库,它是通过程序设计的,并通过分配自定义类从情节提要中加载
我在模式视图下拍照,从“拍照”按钮打开
将照片保存到磁盘后,我要求PhotoLib从照片路径创建一个新的PhotoCell


我希望我的PhotoCell启用触摸功能,因此当我点击它时,它将以模态方式打开第二个视图,但是从我的阅读中,我无法从我的PhotoCell或内部的UIImageView(不是控制器)执行此操作。

那我该怎么办? View嵌入在NavigationController中,即使未在下面的屏幕截图中显示。

谢谢 !

最佳答案

如果您在photolib中创建Photocell,则photolib应该从photocell实现委托方法。但是photolib本身不是rootviewcontroller,因此它应该声明委托方法本身,并且包含视图应实现它。

基本上,您将Photocell从自身传递到Photolib(实现委托方法)

-(void) openPhotoCell:(Photocell*)cell
{
  [self.delegate openPhotocell:(Photocell*)cell];
}


,然后将其传递给View,然后由View打开。

看起来好像是从耳朵上拔牙,但是实际上这是相当有效的,并且如果您编写良好的自我解释代码,这不是问题。我目前正在处理一个带有数十个视图和控制器的大型项目,并且效果很好,没有人遇到任何问题。

如果您有更多的层,那么也许您应该考虑NSNotification。

希望能有所帮助,我很乐于解释更多。

UPD:

链接:

about delegates in cocoa fundamentals guide

delegation pattern in wikipedia

07-26 03:57