【问题标题】:Accessing functions in a parent controller访问父控制器中的函数
【发布时间】:2025-12-05 19:15:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone objective-c xcode opengl-es viewcontroller


    【解决方案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];
        }
        

        【讨论】: