在 IOS 中将操作传递到一个 uiview 到另一个 uiview



我创建了一个名为ImageShowcaseUIView,它有一个UIScrollView,然后我添加了继承UIButton类调用ImageShowcaseCell。它工作正常。我感到困惑的一件事是在视图控制器中处理操作的最佳方法是什么,我目前已添加ImageShowCase,当我可以在继承的类ImageShowcaseCell中处理UIControlEventTouchUpInside操作UIButton但我想在View Controller中处理它,以便我可以执行适当的操作。

实现这一目标的最佳方法是什么。

在自定义 ImageShowcaseCell 类中,可以将操作发送到响应程序链上,并允许视图控制器处理它:

[[UIApplication sharedApplication] sendAction:@selector(someMethodOnMyViewController:) to:nil from:self forEvent:nil];

或者,您也可以使用:

  1. 委托模式 - 将视图控制器设置为图像展示单元的委托。
  2. 在自定义类中创建基于块的方法,以便在触摸后执行块。
有点

晚了,但为什么不使用响应链并在ImageShowCaseCell按钮上添加操作呢?如果像这样添加:

[imageShowCaseCellInstance setTarget:nil action:@selector(methodYouWantCalledOnYourViewController) forControlEvents:UIControlEventTouchUpInside

只要您的imageShowCaseCellInstance没有实现此方法,而您的视图控制器实现了,响应器链就应该将其传递给您的视图控制器(因为nil是为target指定的),只要ImageShowCaseCell在视图控制器的层次结构中。

Edwin 的答案 (https://stackoverflow.com/a/13461504/482557) 有效,但通过在按钮上设置目标,您可以更明确。

使用 delegate 实现它。我的view controller里已经有一位代表ImageShowCase.所以我所做的我在ImageShowcase中添加了另一个ImageShowcaseCell.现在,我将UIControlEventTouchUpInside事件从ImageShowcaseCell传递给ImageShowcase,ImageShowcase将其传递给view Controller

ImageShowcaseCell (TouchUpInside) ----> ImageShowcase ----> ViewController

不能更干净。:)

最新更新