Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios 为什么parentViewController、presentingViewController和PresentedViewController始终为零_Ios_Swift_Uiviewcontroller_Sprite Kit - Fatal编程技术网

Ios 为什么parentViewController、presentingViewController和PresentedViewController始终为零

Ios 为什么parentViewController、presentingViewController和PresentedViewController始终为零,ios,swift,uiviewcontroller,sprite-kit,Ios,Swift,Uiviewcontroller,Sprite Kit,我有一个带有几个ViewController的简单应用程序,当我在VC中时,我需要知道我来自哪个VC,除了第一个。所有VCs都在故事板中创建,我使用以下代码浏览VCs: class FirstVC: UIViewController { func ShowStartVC() { if gFirstStart { let vc = self.storyboard!.instantiateViewControllerWi

我有一个带有几个ViewController的简单应用程序,当我在VC中时,我需要知道我来自哪个VC,除了第一个。所有VCs都在故事板中创建,我使用以下代码浏览VCs:

class FirstVC: UIViewController
{    
    func ShowStartVC()
    {
        if gFirstStart
        {
            let vc = self.storyboard!.instantiateViewControllerWithIdentifier("EvalUserLevelVC") as EvalUserLevelVC
            self.presentViewController(vc, animated: false, completion: nil)
        }
        else
        {
            let vc = self.storyboard!.instantiateViewControllerWithIdentifier("ChoixLevelVC") as ChoixLevelVC
            self.presentViewController(vc, animated: true, completion: nil)
        }
    }

    func ShowPrefsVC()
    {
        let vc = self.storyboard!.instantiateViewControllerWithIdentifier("PrefsVC") as PrefsVC
        self.presentViewController(vc, animated: true, completion: nil)
    }
}


class FirstVCSceneClass: SKScene
{
    var VCFirst = FirstVC?()

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
    {    
        for touch: AnyObject in touches
        {
            let location = touch.locationInNode(self)

            switch self.nodeAtPoint(location).name!
            {
            case "Start":
                VCFirst?.ShowStartVC()
                self.paused = true

            case "Preferences":
                VCFirst?.ShowPrefsVC()
                self.paused = true

            default:
                break
            }
        }
    }
}
在上面的代码中,ChoixLevelVC可以从这里调用,从另一个VC调用的方式完全相同,我需要知道它是从哪个VC调用的。我的理解是,当我从ChoixLevelVC UIViewController类访问属性presentingViewController时,它应该具有此信息

但是如果我把下面的代码放在ChoixLevelVC中,一切都是零,尽管我希望在property presentingViewController中找到FirstVC

class ChoixLevelVC: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource
{
    override func viewDidLoad()
    {
        println("ParentViewController : \(self.parentViewController)")
        println("presentingViewController : \(self.presentingViewController)")
        println("presentedViewController : \(self.presentedViewController)")
    }
}

在每一个VC中都是一样的。为了正确设置这些属性,我需要做些什么吗?

println语句是在UIViewController子类中还是在SKScene子类中?println在每个UIViewController子类的viewdidload func中。编辑使它更清晰有没有更新过这个问题?从我的modalVC访问我现有的GVC时遇到同样的问题。