如何从在当前类中实例化的另一个类调用方法

时间:2012-07-04 15:12:29

标签: objective-c ios class methods

我的屏幕有一些像这样的视图

__________________
|          _____  |
|          |    | | //viewX is a video screen
|          |    | | 
| viewX    | vY | | //viewY is a custom uiview i created.
|          |____| | //it contains a method which i would like to call that toggles
|_________________| //the hidden property of this view. and when it hides, a little
|                 | //button is replaced no the top right corner on top of viewX
| viewZ           | //the video layer
|                 |
|_________________| //viewZ is a view containing many square views - thumbnails.

我的问题是,我不知道如何注册触摸事件,以便无论用户触摸屏幕的哪个视图,它都能识别任何触摸事件。我正在处理其中每个视图的触摸事件。所以一切运作良好......

然而,我试图做的是当用户点击屏幕上的任何其他地方但在viewY上时,viewY应该通过在viewY类中调用该方法来消除。

此viewY类已实例化,并且没有附加xib文件。 uiview是在viewY类中以编程方式创建的。 viewY behviour的整个类在viewX中被实例化 - 视频视图。

我的老板说添加代表..虽然我现在已经知道如何做到这一点......任何帮助?

无论如何,我可以让它变得非常简单,并且能够说出REMOVE VIEW,无论我来自哪个班级?

我也看到其他人通过使用这些时髦的箭头来实现这一点 - > ......< - etc ..虽然我不确定那是不是我需要什么或如何实现这样的事情。

啊我觉得我的问题很复杂,但我的意思是说它很简单,并且知道它可以很容易地完成!

2 个答案:

答案 0 :(得分:1)

不会打电话

[viewY hideThisViewAndShowLittleButton];
做正确的工作?如果要删除viewY,可以调用:

[viewY removeFromSuperview];

要从viewY访问viewZ,只要viewZ有权访问viewX,您就可以在viewX中定义一个返回给您的方法viewY。类似的东西(在viewX的实施文件中:

- (UIView*)viewY {
   return <viewX_knows_which_value_to_return>;
}

至于viewX_knows_which_value_to_return,只要viewY是唯一的子视图,您就可以这样做:

[self.view.subviews lastObject];

(注意:我假设这里实际上viewX是一个视图控制器,而不是UIView)。

答案 1 :(得分:0)

这是一个好方法。 您甚至可以通过隐藏或添加alpha来实现此目的。

vY.hidden = YES;

将其取回

vY.hidden = NO;