質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1025閲覧

関数外で値を利用したい

nishimu

総合スコア26

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/10/27 00:42

私は簡単な足し算アプリを作成しようと思い、以下のコードを書きました。

###作りたいアプリの概要

addingNumber1Label(+の左側の空欄)とaddingNumber2Label(+の右側の空欄)に数字をランダムで表示させる
ユーザーはこれらのラベルを見てaddingAnswerTextField(=の右側)に答えを入力
正解した場合にCURRECTと表示し、失敗した場合にはINCURRECTと表示させます。(式の下に表示)
ユーザーがCHANGEボタンを押せば数字が変わります

###実現したいこと
@IBAction func addingChangeButtonで用いたnumber1,number2の値を別関数@IBAction func addingNumberButtonで利用したいのですができません。どなたかご教授願います

viewcontrollerswift

1import UIKit 2 3class ViewController: UIViewController { 4 5 6 @IBOutlet weak var addingNumber1Label: UILabel! 7 @IBOutlet weak var addingNumber2Label: UILabel! 8 @IBOutlet weak var addingAnswerTextField: UITextField! 9 @IBOutlet weak var addingResultLabel: UILabel! 10 11 var number1:Int = Int.random(in: 0..<10) 12 var number2:Int = Int.random(in: 0..<10) 13 14 @IBAction func addingChangeButton(_ sender: Any) { 15 let number1:Int = Int.random(in: 0..<10) 16 let number2:Int = Int.random(in: 0..<10) 17 addingNumber1Label.text = String(number1) 18 addingNumber2Label.text = String(number2) 19 20 } 21 22 23 @IBAction func addingNumberButton(_ sender: Any) { 24 let addingAnswer:Int = number1 + number2 25 let userAnswer: String = addingAnswerTextField.text! 26 27 if addingAnswer == Int(userAnswer){ 28 addingResultLabel.text = "CORRECT" 29 addingResultLabel.isHidden = false 30 }else{ 31 addingResultLabel.text = "INCORRECT" 32 addingResultLabel.isHidden = false 33 } 34 } 35 36 37 override func viewDidLoad() { 38 super.viewDidLoad() 39 // Do any additional setup after loading the view. 40 41 } 42 } 43

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

@IBAction func addingChangeButton で ローカル変数として number1, number2 を宣言しているのが問題だと思います。

つまり、addingChangeButton 内で宣言された number1, number2 と、ViewController のメンバ変数である number1, number2 が別物になってしまっている、ということです。

swift

1 // 名前は同じだが、addingChangeButton 内の変数とは別物 2 var number1:Int = Int.random(in: 0..<10) 3 var number2:Int = Int.random(in: 0..<10) 4 5 @IBAction func addingChangeButton(_ sender: Any) { 6 // ここで↑とは違うローカル変数を宣言している 7 let number1:Int = Int.random(in: 0..<10) 8 let number2:Int = Int.random(in: 0..<10) 9 addingNumber1Label.text = String(number1) 10 addingNumber2Label.text = String(number2) 11 12 }

なので、addingChangeButton から メンバ変数の number1, number2 を参照すればよいです。

swift

1 var number1:Int = Int.random(in: 0..<10) 2 var number2:Int = Int.random(in: 0..<10) 3 4 @IBAction func addingChangeButton(_ sender: Any) { 5 // ここで↑のメンバ変数を参照する 6 self.number1 = Int.random(in: 0..<10) 7 self.number2 = Int.random(in: 0..<10) 8 addingNumber1Label.text = String(self.number1) 9 addingNumber2Label.text = String(self.number2) 10 11 }

投稿2019/10/27 01:04

niharu

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishimu

2019/10/27 08:20

貴重なお時間を割いての回答ありがとうございます。 メンバ変数を用いて書き直すことで実現したかったコードが動きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問