前提・実現したいこと
1つ目の画面にある、上右下左のいずれかを押したら、
2つ目の画面にある、「あなた」の下部に選択した矢印が表示され、
「ホイッ!!」の下部にはランダムに選択された矢印が表示されるようにしたいです。
上右下左のいずれかをタップすると、ResultViewControllerに切り替わる仕組みになってます。
発生している問題・エラーメッセージ
ソースコードでは、合っているはずなんですが、ResultViewControllerの「ホイッ!!」と「あなた」のそれぞれの下部に配置したUILabelがなぜか表示されません。 原因がわからずつまづいています。 どうかご回答よろしくお願いします。
該当のソースコード
**「ChoiceViewController」 ** import UIKit class ChoiceHandViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. random_cpuHand() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //上右下左の手を用意 let Hand = ["⬆︎","➡︎","⬇︎","⬅︎"] //プレイヤーの手 var Player_Hand = "" //CPUの手 var CPU_Hand = "" //CPUの手をランダムに選択 //配列の番号にUInt32は使えない!? func random_cpuHand() { let random = Int(arc4random_uniform(4)) CPU_Hand += Hand[random] } //上を選択 @IBAction func UpButton(_ sender: Any) { Player_Hand += Hand[0] } //右を選択 @IBAction func RightButton(_ sender: Any) { Player_Hand += Hand[1] } //下を選択 @IBAction func DownButton(_ sender: Any) { Player_Hand += Hand[2] } //左を選択 @IBAction func LeftButton(_ sender: Any) { Player_Hand += Hand[3] } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ } **「ResultViewController」** import UIKit class ResultViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. displayresult() result() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBOutlet weak var CPULabel: UILabel! @IBOutlet weak var PlayerLabel: UILabel! //勝敗の判定を表す変数 var winorlose = "" //スコアを保持する変数 var score = 0 //ChoiceHandViewControllerのインスタンスを作成 let choice_instance = ChoiceHandViewController() //勝敗を判定する処理 func result() { if choice_instance.Player_Hand == choice_instance.CPU_Hand { winorlose = "lose" } else { winorlose = "win" score += 1 } } //両者の手を表示 func displayresult() { //プレイヤーの手を表示 PlayerLabel.text = choice_instance.Player_Hand //CPUの手を表示 CPULabel.text = choice_instance.CPU_Hand } //プレイヤーが勝ちなら前画面に戻る、負けならゲーム終了 @IBAction func changeViewButton(_ sender: Any) { if winorlose == "win" { performSegue(withIdentifier: "Win", sender: nil) } else if winorlose == "lose" { performSegue(withIdentifier: "Lose", sender: nil) } } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ }
試したこと
・ChoiceViewControllerの@IBActionに、print(Player_Hand)を追加したら、確かにPlayer_Handには選択した矢印が表示されていました。
・ func displayresult() {
//プレイヤーの手を表示
PlayerLabel.text = choice_instance.Player_Hand
//CPUの手を表示
CPULabel.text = choice_instance.CPU_Hand
print(choice_instance.Player_Hand)
print(choice_instance.CPU_Hand)
}
のように記述しましたが、コンソール画面には何も表示されませんでした。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー