Objective-C - 来自其他控制器的访问方法

时间:2011-05-02 14:03:12

标签: iphone objective-c methods controller

我有一个关于访问另一个控制器中的方法的问题,我正在尝试这个。 所以例如我有控制器A和B.在控制器A我编写了一个方法,现在我想通过控制器B访问它。

我在头文件中的A类中做了什么:

+(void)goBack;

并在实施文件中:

+(void)goBack {
NSLog(@"go back");
}

在控制器B中执行此操作以访问控制器A中的方法:

+(void)goPreviousArticle:(id)sender {
ViewProductInformation_ViewController *theInstance = [[ViewProductInformation_ViewController alloc] init];
[theInstance goBack];
}

然而,当我执行程序时,它不起作用,程序只是关闭,当我执行命令点击控制器B中的函数goBack时,我会参考控制器A中的方法。

有人知道问题可能是什么吗?

提前感谢,

多雪

4 个答案:

答案 0 :(得分:3)

这很容易......你只是混合了类和实例方法声明:“+”符号表示该方法是一个类方法。在你的情况下,它应该是“ - ”所以

-(void)goBack; // a instance method declaration!

希望这有帮助。

类与实例方法声明...另请参阅What is the difference between class and instance methods?

答案 1 :(得分:0)

您将goBack声明为CLASS方法(使用前面的“+”)。将+更改为 - 。

答案 2 :(得分:0)

由于goBack是A类的静态方法,你不需要A的实例来调用它的方法,你可以像这样调用它:

[ClassA goBack];

答案 3 :(得分:0)

你不需要像这样声明静态函数:

-(void)goBack {
NSLog(@"go back");
}

在A组中,在B组中相同:

-(void)goPreviousArticle:(id)sender {
ViewProductInformation_ViewController *theInstance = [[ViewProductInformation_ViewController alloc] init];
[theInstance goBack];
}

然后使用它们。我想在那种情况下应用程序不会崩溃。