-2

我有一个UIViewcontroller,我在其上添加了一个UIView作为子视图,然后UIView在第一个视图上添加了另一个作为另一个子视图。

现在我想UIViewController从 last中调用一个方法UIView。所有这些视图都是自定义视图,并已创建为不同的类。

从孩子的孩子那里调用这个最高视图的最佳方式是什么?

4

4 回答 4

0

您不能将视图添加为 UIViewController 的子视图。我相信您将其添加为控制器视图的子视图。我不明白你在这个问题中要问什么。如果我错了,请纠正我。我假设您想在某些用户交互上调用 UIViewController 中的方法。如果这个视图(孩子的孩子)是一个按钮,你可以简单地这样做:

[button addTarget:nil action:@selector(methodToCall:) forControlEvents:UIControlEventTouchUpInside];

一个 nil 目标将导致 UIViewController 中的方法 methodToCall 被调用。如果您在那里没有看到调用,请确保视图层次结构(其中的所有前驱视图)已启用用户交互。

更好的方法(如果您没有子类化 UIButton)是为您的自定义视图创建一个协议,指定一个点击手势识别器,指定一个委托并在收到点击时在委托中发送调用方法。

于 2013-07-05T05:57:38.200 回答
0

视图控制器的全部意义在于它可以控制视图。您不应该向视图添加知识,这需要它知道将信息传递给控制器​​。视图应该有UIControls 并且控制器设置适当的目标和动作,或者控制器应该向视图添加手势,并再次指定适当的目标和动作。

于 2013-07-05T06:35:02.090 回答
0

我无法得到你想要的东西。如果你想要简单的最顶层视图,那么当你调用 addsubview 时设置这个视图的标签。每次添加子视图时增加标签,删除子视图时减少标签。然后你很容易得到最顶层视图当前标签的帮助。

于 2013-07-05T07:15:19.593 回答
0

这样做,

TopView.h

@property (nonatomic, assign) YourViewController *ViewController_object;

TopView.h

-(void)dealloc {

    [super dealloc];
    ViewController_object=nil;
}

-(void)your_method {
   [ViewController_object method_from_VC];
}

希望它会帮助你...

于 2013-07-05T07:23:08.063 回答