Невозможно установить делегат между ViewController и SKScene - PullRequest
0 голосов
/ 22 января 2019

Я хочу установить делегирование между моим GameViewController и файлом SKScene, но возникла ошибка. Моя цель - вызвать метод из файла SKScene.

Ошибка: значение типа 'GameScene' не имеет члена 'gameViewControllerDelegate'

Что я делаю не так?

Заранее спасибо

MainSC.swift

import UIKit
import SpriteKit
import Firebase
import StoreKit
import GoogleMobileAds

class MainVC: UIViewController, GameViewControllerDelegate {


    override func viewDidLoad() {
        super.viewDidLoad()

     if let view = self.view as! SKView? {

            if let scene = SKScene(fileNamed: "GameScene") {
                let gameScene = scene as! GameScene

                //THIS GUY THROWING ERROR
                 gameScene.gameViewControllerDelegate = self 

                gameScene.scaleMode = .aspectFill
                gameScene.size.width = 414
                gameScene.size.height = 736
                view.presentScene(gameScene)

            }

            view.ignoresSiblingOrder = true

            view.showsFPS = true
            view.showsNodeCount = true
            view.showsPhysics = true

        }
    }
func callMethod(inputProperty:String) {
        print("inputProperty is: ",inputProperty)
    }
}

MainSC.swift

import UIKit
import SpriteKit
import GameplayKit
import Firebase
import GoogleMobileAds

protocol GameViewControllerDelegate : class {
    func callMethod(inputProperty:String)
}

class MainSC: SKScene {

    weak var gameViewControllerDelegate : GameViewControllerDelegate?

override func didMove(to view: SKView) {

       ...

       gameViewControllerDelegate?.callMethod(inputProperty: "call game view controller method")

    }

}

1 Ответ

0 голосов
/ 27 января 2019

Вы не установили делегата gameViewControllerDelegate как self в MainVC, так как можно вызвать делегата этого SKscene. Так что установите себя в MainVC

...