我希望在我的SpriteKit游戏中显示UIAlertView(说没有足够的硬币来选择项目)。我在我的(仅)ViewController中设置了UIAlertView *alertView;
属性
并初始化它。
但我无法从我的场景中访问此内容(尝试调用公共方法,但它无法正常工作)。
如何从场景中访问我的ViewController及其属性?
答案 0 :(得分:2)
至于如何从SKScene或任何SKNode访问ViewController(及其属性),我会在创建后将指针保存在这些SKNode中。
@interface YourScene : SKScene
@property (weak,nonatomic) UIViewController * presentingViewController;
@end
// inside the ViewController
YourScene * scene = [YourScene new];
scene.presentingViewController = self;
[skView presentScene:scene];
您不必将alertView
属性放在ViewController中;你可以把它放在你的SKScene,或任何你喜欢的地方。您甚至不必设置委托,但是如果您想让您的SKScene子类符合UIAlertViewDelegate
协议。
@interface YourNode : SKNode<UIAlertViewDelegate>
- (void) displayAlert;
@end
// ...
@implementation YourNode
- (void) displayAlert {
UIAlertView * alertView = [UIAlertView alloc] initWithTitle:@"Your title" message:@"Your message is this message" delegate:self cancelButtonTitle:@"Cancel me" otherButtonTitles:@"Whatever", nil];
[alertView show];
}
@end