2017-03-27 13 views
0

GameViewControllerでイベントが発生したときにView Controllerで何かをしようとしています。タイプ '()'の値を 'CallbackBlock!'に割り当てることができません。

だから、これはViewControllerを

public class ViewController: UIViewController { 

    var gameController: GameController! 


    public override func loadView() { 
     super.loadView() 

      gameController = GameController() 
    } 


    override public func viewDidLoad() { 
     super.viewDidLoad() 

     // This is where I get the error (which is the title) 
     gameController.onAnagramSolved = self.showLevelMenu() 

    } 



    func showLevelMenu(){ 
    // A method showing UIAlertController 

    } 

で私は何をすべきか

GameViewController

 typealias CallbackBlock =() -> Void 

     public class GameController { 
      var onAnagramSolved : CallbackBlock! 


    func inSomeMethod(){ 
     self.onAnagramSolved() 
    } 
} 

あるしかし、私はスウィフトで

Cannot assign a value of type '()' to type 'CallbackBlock!' 

そのを言ってエラーが出ます3.

答えて

1

メソッド名の後に()を削除してみます。これ

gameController.onAnagramSolved = self.showLevelMenu() 

gameController.onAnagramSolved = self.showLevelMenu 

最初の構文は、関数呼び出しためのものであり、他の一つは関数参照ためのものである(すなわち、生成することは、この行を変更すること、あります与えられた関数への参照)。

Aより明示的なオプションではなく閉鎖を使用することです:

gameController.onAnagramSolved = { self.showLevelMenu() } 
+0

おかげでたくさんの男!あなたは私の日を救った! – Aryan

関連する問題