2017-01-07 7 views
0

基本ロジックでは、すべてをオーバーライドするので、オーバーライド関数をif else文に入れることはできません。しかし、私はまだelse文にsegueの準備を入れる必要があります。したがって、私が働いているコードの仕方は、ユーザーがボタンを2回押してゲームに勝つと、得点が表示される勝者ビューコントローラーに行く場合です。彼らが失った場合、スコアのないView Controllerに移動します。だから私はelse if counter < 9.9 && level == 2部分のupdateTimer()にオーバーライド機能のセグを置く必要があります。オーバーライド関数をif else文に挿入する方法

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let DestViewController : winViewController = segue.destination as! winViewController 

    DestViewController.LebelText = labelx.text! 

} 

func updateTimer() { 
    counter += 0.1 
    labelx.text = String(format: "%.1f", counter) 
    if counter > 10 && level < 2 { 
     let next = self.storyboard?.instantiateViewController(withIdentifier: "loseViewController") as? loseViewController 
     self.present(next!, animated: true, completion: nil) 
    } else if counter < 9.9 && level == 2 { 
     let nextc = self.storyboard?.instantiateViewController(withIdentifier: "winViewController") as? winViewController 
     self.present(nextc!, animated: true, completion: nil) 
    } else { 
     return 
    } 
} 
+1

私はあなたが何を求めているのか分かりませんが、ストーリーボード内でセグを定義し、if文の2つの枝で定義してから、performSegueWithIdentifier(sender:)を'instantiate..'と' present ... 'を返します。 –

答えて

1

上記Jonのコメントをオフに構築するには、あなたもpresent(UIViewController:)を呼ぶべきではない - それもprepare(for segue:)メソッドを呼び出すことはありません。あなたがやろうとしているのは、特定の時刻に条件を確認し、その条件に基づいて、いくつかのデータを渡して宛先ビューコントローラに表示することです。あなたがseguesを使用したい場合は

、最高のアイデアは、セグエの識別子を設定することです:

まず、あなたはセグエを作成する必要があります。先のVCに制御してドラッグを保持し、その後、ストーリーボードでのVCの最上部にあるビューコントローラのアイコンの上にマウスを移動: createSegue

次にあなたがユニークに設定する必要がその後セグエ

の種類を選択segueの識別子で、コード内の他のセグを区別することができます。これを行うには、セグエ自体を選択し、[インスペクタ]ペインに移動し、「識別子」フィールドに一意の名前を入力します。 identifySegue

あなたは両方のあなたが欲しいseguesは、あなたがして編集できるためということやった後このような何かにあなたのコード:

func updateTimer() { 
    counter += 0.1 
    labelx.text = String(format: "%.1f", counter) 
    if counter > 10 && level < 2 { 
     // Use first unique segue identifier 
     self.performSegue(withIdentifier: "identityA", sender: self) 
    } else if counter < 9.9 && level == 2 { 
     // Use second unique identifier 
     self.performSegue(withIdentifier: "identityB", sender: self) 
    } 
} 

今すぐあなたがprepare(for segue:)内の特別なコードを追加することができ、あなたが差別と異なる宛先VCの

のための特別なコードを追加するためにあなたがInterface Builderで指定された一意の識別子を使用することができます
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "identityA" { 

     let destinationA: winViewController = segue.destination as! winViewController 
     destinationA.LebelText = labelx.text 

    } else if segue.identifier == "identityB" { 

     let destinationB: loseViewController = segue.destination as! loseViewController 
     destinationB.LebelText = labelx.text 

    } 
}