2

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

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

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

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

谢谢 !

从 XCode 查看

4

1 回答 1

2

如果你在 photolib 中创建 Photocell,那么 photolib 应该从 photocell 实现委托方法。但是 photolib 本身不是 rootviewcontroller,所以它应该自己声明委托方法,并且包含的​​视图应该实现它。

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

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

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

这看起来像是从耳朵里拔牙,但实际上它很有效,如果你编写了很好的不言自明的代码,那不是问题。我目前正在做一个有几十个视图和控制器的大项目,它工作得很好,没有人对此有任何问题。

如果您有更多层,那么也许您应该查看 NSNotification。

希望它有所帮助,我很乐意解释更多。

升级版:

链接:

关于可可基础指南中的代表

维基百科中的委托模式

于 2012-06-20T18:15:53.707 回答