2017-02-17 6 views
2

私は最近、アプリケーション開発の学習を開始しました。ほとんどすべてのチュートリアルは迅速なものではないため、変更された特定のものの構文については混乱します。 。Swift 3.0:アクション補完を確認するパラメタ

//Take the user to the game screen from the intro scene 
     let introLabel = childNode(withName: "introLabel") 

      if introLabel != nil{ 
       let fadeOut = SKAction.fadeOut(withDuration: 1) 

       introLabel?.run(action: fadeOut, completion:() -> Void) 
     } 

私はすべてインターネットのまわりで検索していると私は(完了すると:)ここに置くことになっています不足しているものを見つけることができないよう

答えて

2
completion:() -> Void 

それは、関数を呼び出しますことを言いますhave no parameter()と戻り値の型は、あなたがこのように使用することができ、Void 機能は、あなたのコードでは、この

func handleCompletion() -> Void { 
    //Do something when complete 
} 

のようです。

introLabel?.run(action: fadeOut, completion: handleCompletion) 

handleCompletion

上記の私の関数であるあなたが使用することで、このためにclosure swiftまたはfirst class function swiftキーワードをグーグルことができ

+0

よしので、私はhandleCompletion機能のアクションの完了後に実行したいコードを置きます。私はあなたのように私のコードでそれを使用して、私はエラー "引数ラベル(アクション:完了:任意の使用可能なオーバーロードと一致しない")ので、私はアクションを取り除く:パラメータから、 "void"(別名 '()')を期待される引数型 '() - > Void'に変換できません。 –

+0

@RichardParkerあなたが渡したときに'handleCompletion()'を 'completion'パラメータの引数として使用すると、handleCompletion'を評価した結果を渡す' handleCompletion'クロージャを渡すことはありません。クロージャ自体を渡すには、 '()'を省略してください: '(fadeOut、completion:handleCompletion)' – Alexander

+0

それは働きました、ありがとう! –