我知道其他类似的问题已经被问到了,但是我已经通过了他们和他们的建议,而且根本无法让这个问题起作用。
我有一个带有关联h和m文件的视图控制器,这些文件访问另一个h和m文件(不是视图控制器)。
这个另一个被调用的文件需要在完成后调用它的父函数,但我不能让它在父文件中调用函数。
代码段:
ParentViewController.h:
#import <UIKit/UIKit.h>
@interface ParentViewController : UIViewController <UITextFieldDelegate> {
....
}
@end
ParentViewController.m:
#import "ParentViewController.h"
#import "OtherView.h"
@implementation ParentViewController
- (void)callThis {
NSLog(@"this is not called");
}
@end
OtherView.h:
#import <UIKit/UIKit.h>
@interface OtherView : UIView {
...
}
@end
OtherView.m:
#import "OtherView.h"
@implementation OtherView
-(void)done {
[self callThisFirst];
[ParentViewController callThis];
}
-(void)callThisFirst {
NSLog(@"This is called");
}
@end
任何人都可以帮助我在父文件中调用该方法吗?
由于
答案 0 :(得分:1)
首先,你创建的方法是一个实例方法,因为它以-
为前缀,但是你试图调用它,看起来你正试图调用类方法,因为你“我没有指定一个对象,而是指定了类名。
其次,在您的ParentViewController
课程中,您没有在头文件中显示您声明的方法callThis
,这意味着OtherView
对该方法一无所知。您必须将以下行添加到ParentViewController.h中的@interface
:
- (void)callThis;
第三,您必须为您的#import
类添加ParentViewController.h的OtherView
到OtherView.m,以便了解ParentViewController
类。
答案 1 :(得分:0)
所以在你的ParentViewController.h中你有:
...}
@end
也就是说,您没有声明要调用的方法。但是我们可以看到它是一个实例方法,因为实现说:
- (void)callThis { //...
但你试图把它称为类方法:
[ParentViewController callThis];
那不行。 ParentViewController
没有+callThis
方法,所以没有骰子。您需要将ParentViewController
的实例传递给另一个对象,然后将其称为:
[theParentViewController callThis];
其中theParentViewController
是指向实际ParentViewController
对象的指针。您还需要将-callThis
的声明添加到ParentViewController.h,即:
...}
-(void)callThis;
@end
答案 2 :(得分:0)
看起来你想在ParentViewController上使用callThis作为类方法而不是实例方法。
只需将-(void)callThis
更改为+(void)callThis
并将该签名复制到ParentViewController.h中的@interface声明中。
您还需要在OtherView.m中调用#import "ParentViewController.h"
。您不需要在ParentViewController.h中#import "OtherView.h"
,因为您没有引用该类中的任何内容。