我有一个关于访问另一个控制器中的方法的问题,我正在尝试这个。 所以例如我有控制器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中的方法。
有人知道问题可能是什么吗?
提前感谢,
多雪
答案 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];
}
然后使用它们。我想在那种情况下应用程序不会崩溃。