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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

4007閲覧

[Swift]アラートが表示されない

Amuy

総合スコア50

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/02/06 09:40

前提・実現したいこと

ゲームを作成しています。
バッグ画面を開いた時にもしアイテムを持っていなかったら、アイテムを持っていません。と、アラートが出るようにしたいです。

該当のソースコード

swift

1func noItemAlert (){ 2 print("アラート表示") 3 // アラートを作成 4 let alert = UIAlertController( 5 title: "TA・SU・KE", 6 message: "バッグにアイテムがありません。\nこの画面を閉じます", 7 preferredStyle: .alert) 8 9 // アラートにボタンをつける 10 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 11 12 // アラート表示 13 self.present(alert, animated: true, completion: nil) 14 }

Printにはアラート表示とちゃんと表示されます...

できれば

アラートのOKボタンを押したときに実行されるプログラムをどこに書けばいいのかも教えて欲しいです.
よろしくお願いしますm(_ _)m

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

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

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

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

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

t_obara

2020/02/06 10:25

> バッグ画面を開いた時 今はどこに書いて試したのですか? どこに書けば良いのかが知りたいのであれば、ご自身でどのようにしたのかもご提示されるとよろしいかと。
eytyet

2020/02/06 12:15

technocorecrissさんが回答されていますが、私の環境でもnoItemAlert()自体は動きました。 表示されない現象が出たあと、右下のコンソール領域に出力されているはずのエラーメッセージも示していただけるとより問題を特定しやすいです。
Amuy

2020/02/07 10:40

もしかしたらですけど、この画面にはTableViewを使っています。 その下にアラートが行ってしまって表示されないのかもしれません... アラートを上に表示する方法を知っていたらご教授していただけると幸いです。m(_ _)m
t_obara

2020/02/07 10:58

前にも記載していますが、これを呼び出すところも提示すれば良いのですが。 適切な場所で呼び出せば、回答されている通り表示されるのは確認できているので。
Amuy

2020/02/08 00:30

if deathblowNameArrayUD.array(forKey: "DeathBlowArray")?.isEmpty == true { debugPrint("空") noItemAlert() }else { debugPrint("入っている") } アイテムの名前を入れている配列に何も入っていなかったら「noItemAlert」を呼び出すプログラムにしています..
t_obara

2020/02/10 00:37

そのコードはどのように呼び出しているのですか?どのようなタイミングで呼び出されることを期待してそこに記載しているのでしょうか。
Amuy

2020/02/10 11:01

viewDidAppearというものを使ってみたら解決しました。 長くお付き合いありがとうございました!
guest

回答2

0

あなたのソースコードでアラートは表示されました。

ちなみにアラートのボタンクリック後の処理はhandlerに記述します。

alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction!) in print("ボタンをタップした時の処理") }))

投稿2020/02/06 10:29

technocore

総合スコア7247

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

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

0

自己解決

viewDidAppearというものを使い、

Swift

1override func viewDidAppear(_ animated: Bool) { 2 super.viewDidAppear(animated) 3 if deathblowNameArrayUD.array(forKey: "DeathBlowArray")?.isEmpty == true { 4 debugPrint("空") 5 noItemAlert() 6 }else { 7 debugPrint("空じゃない") 8 } 9 }

というプログラムにしたら、無事動きました!

原因はTableViewの上にアラートを表示させようとしていたことらしいです。

投稿2020/02/10 11:02

Amuy

総合スコア50

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問