从子 UIView 调用 UIViewController 的函数



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

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

孩子的孩子那里称呼这个最顶层的景色有什么最好的方法?

不能将视图添加为 UIViewController 的子视图。我相信您将其添加为控制器视图的子视图。我不明白你在问题中问什么意思。如果我错了,请纠正我。我假设您想在某些用户交互中调用UIViewController中的方法。如果此视图(子视图的子视图(是一个按钮,则只需执行以下操作:

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

nil 目标将导致在 UIViewController 中调用方法方法。如果在此处看不到调用,请确保视图层次结构(其中的所有前置任务视图(已启用用户交互。

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

视图控制器的全部意义在于它控制视图。您不应该向视图添加知识,因为视图需要它知道才能将信息传递给控制器。视图应具有UIControl,控制器设置适当的目标和操作,或者控制器应向视图添加手势,并再次指定适当的目标和操作。

我无法得到你想要的。如果您想要简单的最顶层视图,那么当您调用AddSubview时设置此视图的标签,并在添加子视图时每次增加标签,在删除子视图时增加标签,然后您可以借助当前标签轻松获得最顶层视图。

像这样做,

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];
}

希望它能帮助你...

最新更新