Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从viewcontroller设置场景代理,未找到代理_Objective C_Delegates_Sprite Kit_Header Files - Fatal编程技术网

Objective c 从viewcontroller设置场景代理,未找到代理

Objective 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

尝试从场景中打开视图控制器

发现非常有用,但在尝试从视图控制器设置委托时出错

“SKScene”没有可见的@interface声明选择器 “setDelegate:”

eabmysene.h

#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];