从另一个类swift调用函数

时间:2014-09-28 05:51:19

标签: xcode swift

我无法从另一个类Menu.swift调用我的GameViewController.swift中的函数。 我把这个函数称为:

class Menu: SKnode {

    func scoreAction(sender:UIButton!) { 
        self.buttonPlay.removeFromSuperview()
        self.buttonScore.removeFromSuperview()
         // CALLING FUNCTION
        GameViewController.showLeaderboard()    
     }
}

以下是我试图打电话的功能:

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)
    }

}

我在GameViewController.showLeaderboard()行的Menu类中有一个Compiler Error "在呼叫"中缺少参数#1的参数但我不明白编译器期望什么类型的参数,因为我声明了函数而不需要任何参数。

谢谢

1 个答案:

答案 0 :(得分:58)

GameViewController中,您已将scoreAction定义为instance方法而不是class函数。您应该通过制作scoreAction的实例来调用GameViewController

class Menu: SKnode {

    func scoreAction(sender:UIButton!) { 
        self.buttonPlay.removeFromSuperview()
        self.buttonScore.removeFromSuperview()
         // CALLING FUNCTION 
         //see () on GameViewController
        GameViewController().showLeaderboard()    
     }
}

如果你在storyBoard中有GameViewController,我认为你应该从storyBoard加载GameViewController