Objective c 从viewcontroller设置场景代理,未找到代理
尝试从场景中打开视图控制器 发现非常有用,但在尝试从视图控制器设置委托时出错 “SKScene”没有可见的@interface声明选择器 “setDelegate:” eabmysene.hObjective c 从viewcontroller设置场景代理,未找到代理,objective-c,delegates,sprite-kit,header-files,Objective C,Delegates,Sprite Kit,Header Files,尝试从场景中打开视图控制器 发现非常有用,但在尝试从视图控制器设置委托时出错 “SKScene”没有可见的@interface声明选择器 “setDelegate:” eabmysene.h #import <SpriteKit/SpriteKit.h> @interface EABMyScene : SKScene { } @property (nonatomic, weak) id <ViewControllerDelegate> delegate; @end
#import <SpriteKit/SpriteKit.h>
@interface EABMyScene : SKScene {
}
@property (nonatomic, weak) id <ViewControllerDelegate> delegate;
@end
#导入
@界面:SKScene{
}
@属性(非原子,弱)id委托;
@结束
错误:“SKScene”没有可见的@interface声明选择器“setDelegate:”类SKScene没有名为delegate的属性,因此该语句
[scene setDelegate:self];
生成了编译器错误。若要解决此问题,请将场景强制转换为SKScene子类EABMyScene:
[(EABMyScene *)scene setDelegate:self];
强制转换到(EABMyScene*)如果您试图在链接中实现代码,那么您在错误的位置定义了委托。它应该在视图控制器中,而不是SKScene子类中。我建议您重新阅读链接中的答案。@protocol定义应该在视图控制器的.h文件中,而不是在eabmysene.h中。如果您发布更改,我将尝试查找问题。更改[scene setDelegate:self];到[(EABMyScene*)场景集委派:自我];它将在10.10和8.0中有一个委托,因此请注意您现在给它起的名字。
#import <SpriteKit/SpriteKit.h>
@interface EABMyScene : SKScene {
}
@property (nonatomic, weak) id <ViewControllerDelegate> delegate;
@end
[scene setDelegate:self];
[(EABMyScene *)scene setDelegate:self];