我无法从另一个类Menu.swift调用我的GameViewController.swift中的函数.我把这个函数称为:
class Menu: SKnode {
func scoreAction(sender:UIButton!) {
self.buttonPlay.removeFromSuperview()
self.buttonScore.removeFromSuperview()
// CALLING FUNCTION
GameViewController.showLeaderboard()
}
}
Run Code Online (Sandbox Code Playgroud)
这是我试图调用的函数:
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)
}
Run Code Online (Sandbox Code Playgroud)
}
我的Menu类中的编译器错误在GameViewController.showLeaderboard()中"参数#1在调用中缺少参数"但我不明白编译器期望的参数类型,因为我声明了函数而没有任何需要参数.
谢谢
cod*_*ter 60
在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()
}
}
Run Code Online (Sandbox Code Playgroud)
GameViewController如果你GameViewController在storyBoard中,我认为你应该从storyBoard 加载
Pra*_*tik 10
如果要在另一个类中执行任何操作方法,则必须使用协议.
//第一堂课以外
protocol abc {
func xyz()
}
Run Code Online (Sandbox Code Playgroud)
//第一堂课
var delegate: abc?
Run Code Online (Sandbox Code Playgroud)
//在第一堂课上
self.delegate.xyz()
Run Code Online (Sandbox Code Playgroud)
//在第二课内你想要执行方法
extension 2nd: abc {
func xyz(){
//code
}
}
Run Code Online (Sandbox Code Playgroud)
//在执行实例化过程的第二个类中
let obj = 2nd initialiser
obj.delegate = self
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
78252 次 |
| 最近记录: |