I'm having trouble calling a function in my GameViewController.swift from another class, Menu.swift. I call the function like this:
class Menu: SKnode {
func scoreAction(sender:UIButton!) {
self.buttonPlay.removeFromSuperview()
self.buttonScore.removeFromSuperview()
// CALLING FUNCTION
GameViewController.showLeaderboard()
}
}
And here is the function I'm trying to call:
class GameViewController: UIViewController, UITextFieldDelegate, GKGameCenterControllerDelegate {
func showLeaderboard() {
var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
gcViewController.gameCenterDelegate = self
gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
gcViewController.leaderboardIdentifier = "yourleaderboardid"
self.presentViewController(gcViewController, animated: true, completion: nil)
}
}
I have a compiler error inside my Menu class in the line GameViewController.showLeaderboard()
Missing argument for parameter #1 in call
but I don't understand what type of argument the compiler is expecting because I declared the function without needing any parameters.
In GameViewController
you have defined scoreAction
as instance
method not the class
function.You should call scoreAction
by making instance of GameViewController
class Menu: SKnode {
func scoreAction(sender:UIButton!) {
self.buttonPlay.removeFromSuperview()
self.buttonScore.removeFromSuperview()
// CALLING FUNCTION
//see () on GameViewController
GameViewController().showLeaderboard()
}
}
I think you should load GameViewController
from storyBoard if you have GameViewController
in storyBoard