我正在试图弄清楚如何从另一个类调用函数。我正在使用RootViewController来设置我的一个视图,比如说AnotherViewController
所以我的AnotherViewController即将添加.h文件
@class RootViewController
在.m文件中我将导入视图
#import "RootViewController.h"
我有一个叫做的函数:
-(void)toggleView {
//do something }
然后在我的AnotherViewController中,我将一个按钮分配为:
-(void)buttonAction {
//}
在buttonAction中,我希望能够在RootViewController中调用toggleView函数。
有人可以澄清我是如何做到的。
我尝试添加这是我的buttonAction:
RootViewController * returnRootObject = [[RootViewController alloc] init];
[returnRootObject toggleView];
但我不认为这是对的。
答案 0 :(得分:1)
你需要在AnotherViewController中创建一个委托变量,当你从RootViewController初始化它时,将RootViewController的实例设置为AnotherViewController的委托。
为此,将实例变量添加到AnotherViewController:“id delegate;”。然后,向AnotherViewController添加两个方法:
- (id)delegate {
return delegate;
}
- (void)setDelegate:(id)newDelegate {
delegate = newDelegate;
}
最后,在RootViewController中,无论在哪里初始化AnotherViewController,都要执行
[anotherViewControllerInstance setDelegate:self];
然后,当您想要执行toggleView时,请执行
[delegate toggleView];
或者,您可以使RootViewController成为单例,但委托方法肯定是更好的做法。我还想指出,我刚刚告诉你的方法是基于Objective-C 1.0的。 Objective-C 2.0有一些新的属性,但是当我学习Obj-C时,这让我很困惑。在查看属性之前,我会先得到1.0(这样你就会明白他们先做了什么,他们基本上只是自动制作getter和setter)。
答案 1 :(得分:1)
我尝试了NSNotificationCentre - 像魅力一样工作 - 感谢您的回复。我无法让它运行但是NS已经开始运行了。
[[NSNotificationCenter defaultCenter] postNotificationName:@"switchView" object: nil];