【问题标题】: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];
}