从另一个类 - Obj C调用一个函数

时间:2010-06-18 01:14:21

标签: iphone objective-c xcode programming-languages

我正在试图弄清楚如何从另一个类调用函数。我正在使用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];

但我不认为这是对的。

2 个答案:

答案 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];