Ios 从子视图向后移动时,Swift convertPointFromView返回NaN

Ios 从子视图向后移动时,Swift convertPointFromView返回NaN,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在做一个游戏的教程部分。单击说明按钮时,屏幕将从SKScene移动到UIViewController,以获取教程。问题是我的SKScene在教程开始前工作正常,但是当从教程返回时,无法单击节点。 以下是从SKScene移动到教程的代码: let a = (self.view?.window?.rootViewController)! as! GameViewController self.willMoveFromView(self.view!) self.view?.removeFromSu

我正在做一个游戏的教程部分。单击说明按钮时,屏幕将从
SKScene
移动到
UIViewController
,以获取教程。问题是我的
SKScene
在教程开始前工作正常,但是当从教程返回时,无法单击节点。
以下是从SKScene移动到教程的代码:

let a = (self.view?.window?.rootViewController)! as! GameViewController
self.willMoveFromView(self.view!)
self.view?.removeFromSuperview()
a.showInstruction()
GameViewController中的方法showInstruction:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let tut = storyBoard.instantiateViewControllerWithIdentifier("pvcTutorial") as! Tutorial
tut.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
addChildViewController(tut)
view.addSubview(tut.view)
tut.didMoveToParentViewController(self)
以下是要从教程移回
SKScene
的代码:

self.parentViewController?.view.removeFromSuperview()
self.parentViewController?.removeFromParentViewController()
self.parentViewController?.willMoveToParentViewController(nil)
我之所以使用parentViewController,是因为我在教程中使用了
UIPageViewControl
。代码将删除
UIPageViewController
,以返回GameViewController
如何从场景中使用detect node

var loc = tap.locationInView(tap.view)
loc = self.convertPointFromView(loc)
let btn = self.nodeAtPoint(loc)
if btn is SKLabelNode{
    if btn.name != nil{
        if unlockLevels.contains(btn.name!){
            let gameScene : GameScene = GameScene(size: size, difficulty: btn.name!)
            let reveal = SKTransition.crossFadeWithDuration(NSTimeInterval(2))
            self.view?.presentScene(gameScene, transition: reveal)
        }else{
            if btn.name == "instruction"{
                let a = (self.view?.window?.rootViewController)! as! GameViewController
                self.willMoveFromView(self.view!)
                self.view?.removeFromSuperview()
                a.showInstruction()
            }
        }
    }
}

我提出的解决方案很简单,而不是:

let a = (self.view?.window?.rootViewController)! as! GameViewController
self.willMoveFromView(self.view!)
self.view?.removeFromSuperview()
a.showInstruction()
我把它改成:

let a = (self.view?.window?.rootViewController)! as! GameViewController
a.showInstruction()
成功了!据我所知,在我之前编写的代码中,我将
SKScene
从GameViewController中删除。然而,我仍然感到困惑,为什么场景仍然能够显示为什么都没有发生,只是无法触摸到它上的任何节点。无论如何,这个问题已经解决了,我们将不胜感激