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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

828閲覧

初心者です。swiftにはArduinoのdelay()みたいなのはありますか?

OtoMura

総合スコア22

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2019/04/20 08:31

じゃんけんをするプログラムを作っていて「じゃんけんをする!」を押したらすぐにランダムで出てしまうと面白くないので、「最初はグー じゃんけん」と表示してから結果を出したいのですがその時間をどう書けばいいかわかりません。
Arduinoをしていてdelay()みたいな感じでできますか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Swiftの遅延処理は以下ですかね
dispachMainQueのasyncAfterを使って"最初はグー じゃんけん"の1秒後に結果を出す

func delay() { print("最初はグー じゃんけん") DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { print("ぽん!") } }

(追加質問の"printではなくLabelでやりたいのですがどうすればいいですか?")への回答
printでもlabelでも考え方は同じなのであります

var answerNumber = 0 //UIButtonのインスタンス生成 var answerLabel = UILabel() @IBAction func shuffleAction(_ sender: Any) { //まずラベルのテキスは"最初はぐ~ じゃんけん" answerLabel.text = "最初はぐ~ じゃんけん" print(answerLabel.text) //ここで遅延処理 DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {        //番号のシャッフル(0~3) self.answerNumber = Int(arc4random_uniform(3)) if self.answerNumber == 0 { self.answerLabel.text = "グー" } else if self.answerNumber == 1 { self.answerLabel.text = "チョキ" } else if self.answerNumber == 2 { self.answerLabel.text = "パー" } //ここで番号とラベルが一致しているかの確認 //番号が0だったら、ラベルは”グー” print("ナンバー", self.answerNumber) print("アンサーラベル", self.answerLabel.text) } }

投稿2019/04/20 09:03

編集2019/04/21 06:09
akaakoz

総合スコア183

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

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

OtoMura

2019/04/20 09:33

回答ありがとうございます。説明不足ですみません。printではなくLabelでやりたいのですがどうすればいいですか?
OtoMura

2019/04/20 09:34

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } @IBOutlet weak var answerImageView: UIImageView! @IBOutlet weak var answerLabel: UILabel! //じゃんけん(数字) var answerNumber = 0 @IBAction func shuffleAction(_ sender: Any) { //0,1,2の数値をランダムに算出(乱数) answerNumber = Int(arc4random_uniform(3)) if answerNumber == 0{ answerLabel.text = "グー" answerImageView.image = UIImage(named:"gu") }else if answerNumber == 1 { answerLabel.text = "チョキ" answerImageView.image = UIImage(named:"choki") } else if answerNumber == 2 { answerLabel.text = "パー" answerImageView.image = UIImage(named:"pa") } } }
OtoMura

2019/04/20 09:36

@IBAction func shuffleAction(_ sender: Any) が実行したらやりたいです。 わからないことがったらお願いします。
OtoMura

2019/04/21 02:08

回答ありがとうどざいます。 var answerLabel = UILabel() のところにInvalid redeclaration of 'answerLabel' と出て調べたら再定義してると書かれていてみながら直したんですがうまくいきませんでした???? それと print("ナンバー", self.answerNumber) print("アンサーラベル", self.answerLabel.text) } }     ここに Expected '}' in class とエラーが出ました できれば全体のプログラムの動きも書いたいただけると嬉しいです。
akaakoz

2019/04/21 06:00

そのままコピペではなく、OtoMuraさんの既存のコードに合わせてください。 invalid redeclarationは OtoMuraさんの @IBOutlet weak var answerLabel: UILabel! と私のvar answerLabel = UILabel() の変数の定義が同じなのでエラーが出てしまいます。 Expected '}' in classはクラス内の}の数が合っていないのでこのエラーが出ます。
OtoMura

2019/04/21 12:44

丁寧に説明していただきありがとうございます。 まだ自分の力ではできそうにないのでもっと色々やってみてから頑張ります。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問