如果当用户触摸 skscene 中的 skspritenode 时,它会转到不同的 View ,如 performseguewithidentifier
。谢谢你的帮助。我可以发布代码,但这似乎是一个通用问题,所以我认为您不需要任何代码。顺便说一句,我已经想出了如何检测 skspritenode 的敲击。我已经看了很长时间了,我很难过。请帮忙。
最佳答案
您不能从 SKScene 中呈现 viewController,因为它实际上只在 SKView 上呈现。您需要一种方法来向 SKView 的 viewController 发送消息,后者将呈现 viewController。为此,您可以使用委托(delegate)或 NSNotificationCenter。
委派
将以下协议(protocol)定义添加到您的 SKScene 的 .h 文件中:
@protocol sceneDelegate <NSObject>
-(void)showDifferentView;
@end
并在接口(interface)中声明一个委托(delegate)属性:
@property (weak, nonatomic) id <sceneDelegate> delegate;
然后,在您要显示共享屏幕的位置,使用以下行:
[self.delegate showDifferentView];
现在,在您的 viewController 的 .h 文件中,实现协议(protocol):
@interface ViewController : UIViewController <sceneDelegate>
并且,在您的 .m 文件中,在呈现场景之前添加以下行:
scene.delegate = self;
然后在其中添加以下方法:
-(void)showDifferentView
{
[self performSegueWithIdentifier:@"whateverIdentifier"];
}
NSNotificationCenter
保留前面替代方法中描述的 -showDifferentView 方法。
在它的 -viewDidLoad 方法中将 viewController 作为通知的监听器添加:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showDifferentView) name:@"showDifferenView" object:nil];
然后,在您想要显示此 viewController 的场景中,使用以下行:
[[NSNotificationCenter defaultCenter] postNotificationName:@"showDifferentView" object:nil];
关于ios - 如何通过代码从 SKScene 转到 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22549255/