问题描述
试图从SKScene打开一个视图控制器。
Trying to open a view controller from an SKScene.
找到非常有帮助,但是当尝试从视图控制器设置委托时,我收到错误。
Found http://stackoverflow.com/a/20072795/1686319 very helpful, but i get an error when trying to set the delegate from the view controller.
EABMyScene.h
#import <SpriteKit/SpriteKit.h>
@protocol EABMySceneDelegate <NSObject>
-(void)doSomething;
@end
@interface EABMyScene : SKScene {
}
@property (nonatomic, weak) id <EABMySceneDelegate> delegate;
@end
任何想法?
更新:
EABViewController.h
EABViewController.h
#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>
@protocol ViewControllerDelegate <NSObject>
-(void) openTweetSheet;
@end
@interface EABViewController : UIViewController <ViewControllerDelegate>
@end
EABViewController.m
EABViewController.m
#import "EABViewController.h"
#import "EABMyScene.h"
@implementation EABViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [EABMyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[scene setDelegate:self];
// Present the scene.
[skView presentScene:scene];
}
-(void)openTweetSheet
{
NSLog(@"Open Tweet Delegate Method");
}
EABMyScene.h
EABMyScene.h
#import <SpriteKit/SpriteKit.h>
@interface EABMyScene : SKScene {
}
@property (nonatomic, weak) id <ViewControllerDelegate> delegate;
@end
错误:SKScene声明中没有可见的@interface选择器'setDelegate:'
Error: No visible @interface for 'SKScene' declares the selector 'setDelegate:'
推荐答案
类SKScene没有一个名为delegate的属性,所以语句
Class SKScene does not have a property named delegate, so the statement
[scene setDelegate:self];
产生编译器错误。要解决此问题,请将场景转换为SKScene子类EABMyScene:
produced the compiler error. To fix this issue, cast scene to your SKScene subclass EABMyScene:
[(EABMyScene *)scene setDelegate:self];
这篇关于从viewcontroller设置SKScene委托,找不到代理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!