2014-09-28 7 views
25

내 GameViewController.swift의 다른 클래스 인 Menu.swift에서 함수를 호출하는 데 문제가 있습니다. 나는 내 메뉴 클래스 내부 컴파일러 오류가다른 클래스의 함수 호출하기

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

}

: 여기

class Menu: SKnode { 

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

그리고 내가 전화하려고 해요 함수 : 이 같은 함수가 호출"매개 변수 # 1 호출에 대한 누락 된 인수"그러나 모든 매개 변수가 필요없이 함수를 선언했기 때문에 컴파일러에서 예상되는 인수의 유형을 이해하지 못합니다.

은하지 class function.You 당신은 스토리 보드에서 GameViewController를로드해야합니다 내가 생각 GameViewController

class Menu: SKnode { 

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

의 인스턴스를 만들어 scoreAction를 호출해야 scoreAction 방법 instance으로 사용자가 정의한 GameViewController 당신에게

+0

클래스 메서드처럼 showLeaderboard를 호출하려고하지만 인스턴스 메서드입니다. GameViewController의 인스턴스를 인스턴스화 한 다음 showLeaderboard를 호출 할 수 있습니다. –

답변

51

을 감사하는 경우 이야기에서 GameViewController을 가지고 계신다.

1

다른 클래스에서 동작하는 ny 메소드는 프로토콜을 사용해야합니다.

// 외부 1 등석

protocol abc { 
    func xyz() 
} 

// 1 등석 내부

var delegate: abc? 

// 1 등석 내부 동작에

self.delegate.xyz() 

// 2 등석 내부 당신이 원하는 수행 방법

extension 2nd: abc { 
    func xyz(){ 
     //code 
    } 
} 

//이 instantiate 과정이 도움이

let obj = 2nd initialiser 
obj.delegate = self 

희망을 수행 2 등석 내부.

관련 문제