2011-05-02 44 views
1

我有一个关于访问另一个控制器中的方法的小问题,ü我正在尝试这个。 因此,例如我有控制器A和B在控制器中我已经编程的方法,现在我想打通控制器B.访问此Objective-C - 从其他控制器访问方法

我在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.提到的方法

不任何人有一个想法可能是什么问题?

在此先感谢,

雪域

+0

Xcode只是IDE - 语言是Objective-C。 (因此,我已经重新标记了您的问题。) – 2011-05-02 14:05:56

+0

为什么使用静态(+)函数? – 2011-05-02 14:09:02

回答

3

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

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

希望这会有所帮助。

类VS实例方法的声明......又见What is the difference between class and instance methods?

+0

这肯定有帮助!经过几个小时的搜索,我很高兴你可以给我一个解决方案。也谢谢你的解释,它已经为我清除了很多! – Snowy 2011-05-02 14:45:45

0

您声明GoBack的作为一个类的方法(与前面的“+”)。将+更改为 - 。

0

由于GoBack的是一个类的静态方法,你并不需要一个实例来调用它的方法,你可以把它像这样:

[ClassA的GoBack的]。

+0

我试过这个,但是没有解决,上面的解决方案对我来说工作正常。 – Snowy 2011-05-02 14:47:40

0

您don'y需要声明,你可以写诗这样的静态函数:

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

在A类和同在B类:

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

然后使用它们。我认为在这种情况下,应用程序不会崩溃。