访问父控制器中的函数

Posted

技术标签:

【中文标题】访问父控制器中的函数【英文标题】:Accessing functions in a parent controller 【发布时间】:2010-04-12 11:39:19 【问题描述】:

我在 XCode 中为我正在处理的 iPhone 项目制作了一个 ViewController,但我对嵌套的 ViewController 以及访问父 ViewController 函数的最佳方式有什么疑问?

基本上,目前我有一个带有 MenuViewController(嵌套)和 GameViewController(嵌套,渲染 OpenGL ES)的 SwitchViewController。

目前,我在 SwitchViewController 中控制了动画视图切换,它可以工作。但我想在玩家从 MenuViewController 中选择关卡并在 GameViewController 中运行适当的关卡后调用它。不是火箭科学,我知道。

调用父函数的最佳方式是什么?

【问题讨论】:

【参考方案1】:

您必须创建一个指向视图控制器父级的指针,并在将视图控制器的视图嵌套在另一个视图中时设置它。

【讨论】:

【参考方案2】:

我不确定我是否正确理解了您的问题,但我会采用委托模式。将指向父视图控制器的指针作为委托传递给嵌套视图控制器 - 这允许您从嵌套视图控制器调用父类上的委托方法。

【讨论】:

【参考方案3】:

我已经解决了,想分享我的发现。

在子视图或子视图控制器中,您可以使用以下代码作为指向其他地方的指针。

#import "TwoViewAppDelegate.h" // import the header of the class you want to reference


- (IBAction)setRedColor:(id)sender

    // Use the class name and create a pointer (in this case mainDelegate)
    TwoViewAppDelegate *mainDelegate = (TwoViewAppDelegate *)[[UIApplication sharedApplication] delegate];
    mainDelegate.textColor = [UIColor redColor];
    [mainDelegate flipToFront];

【讨论】:

以上是关于访问父控制器中的函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ 类的继承一(访问控制)

使父视图控制器可以访问子视图中的 UIButton

AngularJS 从子控制器访问父范围

在嵌套环境中点击 childviewcontroller 中的单元格访问父级父级视图控制器的 tableview 委托

Java内构造函数关键字权限修饰符访问控制及面向对象的特性!

访问父控制器中加载的 FXML 的元素