2016-10-28 8 views
0

私は、Swiftというロック、ペーパー、はさみを使用してiOSアプリケーションを作成しています。Swift 3.0でボタンを使用して、ViewControllerから別のViewControllerに値を渡す方法

ロックピクチャ、ペーパーピクチャ、またははさみピクチャのいずれかのボタンを押すと、別のView Controllerに切り替わり、同調、勝ち、または喪失と表示されます(つまり、ロックボタンは1]をコンピュータの乱数に変換する)。しかし、結果がボタンに表示され、ボタンやviewDidLoad()には表示されないため、結果は表示されません。

私のコードのスニペットを教えてあげます。私は文字列を返すために次のView Controllerで関数を使用しています。

私は、userNumとcomputerNumをボタンの次のView Controller(押されたとき)に渡して、関数を呼び出して文字列を返すだけでいいです。ストーリーボードエディタで

var userNum: Int = 0 
var computerNum: Int = 0 

@IBAction func rock(_ sender: UIButton) { 
    userNum = 1 
    computerNum = (Int)(arc4random_uniform(3) + 1) 
} //This next code will be in the other View Controller 
func chooseWinner(userNum : Int, computerNum : Int) -> String { 
    if userNum == computerNum { 
     return "There is a tie" 
    }else if userNum == 1 && computerNum == 2{ 
     return "You lost!" 
    }else if userNum == 1 && computerNum == 3{ 
     return "You won!" 
    }else if userNum == 2 && computerNum == 1{ 
     return "You won!" 
    } 
    else if userNum == 2 && computerNum == 3{ 
     return "You lost!" 
    }else if userNum == 3 && computerNum == 1{ 
     return "You lost!" 
    } 
    else if userNum == 3 && computerNum == 2{ 
     return "You won!" 
    }else{ 
     return "value" 
    } 
} 
+0

識別子でセグを実行してみてください... – Joe

+0

私はそれを試みましたが、私は値を通す方法を知らない。 – FusionPointInc

答えて

3

、leftclickを押しながらCtrlを保持し、あなたがセグエしたい先のビューコントローラにマウスをドラッグします。マウスを離すと、セグのタイプを選択できます。 show

これはコード内のようにプログラムでIBActionを作成することなく、目的のビューコントローラに向かうことができます。ソース・ビュー・コントローラで

、あなたがセグエをチェックし、segueing前に追加の設定を行うことができます機能

prepare(for segue: UIStoryboardSegue, sender: Any?)

を追加します。

先ビュー・コントローラ内部

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "destination" { 


     //OtherViewController is a placeholder for the viewcontroller class of your destination viewcontroller 
     if let destinationVC = segue.destinationViewController as? OtherViewController { 
      destinationVC.userNum = 1 
      destinationVC.computerNum = (Int)(arc4random_uniform(3) + 1) 
     } 
    } 
} 

のViewControllerソースインサイド

identifier

Inpector属性でごセグエの識別子を設定することを忘れないでください

var userNum: Int! 
var computerNum: Int! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    //do wtv you need with your values 
    print(chooseWinner(userNum: userNum, computerNum: computerNum)) 
} 
+0

はありますか? AnyObjectの代わりに?はい?オーバーライドを削除せずにAnyObjectを実行させることはできません。 – FusionPointInc

+0

良い観察!私は彼らがAnyObjectからAnyに変更されたことを認識しませんでした。 – Danoram

+0

IDはAnyとしてインポートされますか?スウィフト3のようなAnyObjectの代わりに。 –

関連する問題