iOSアプリを作っています。
ログイン機能を設け、ログイン状態を変更したときにアプリを再起動させたいのですがうまくできず、解決できないため知恵をお貸しいただけますでしょうか。
下記のコードを書いていましたが、ViewDidLoadから再起するとその前に宣言しているボタンが無効状態になり、操作が効かなくなりました。
そのため、ViewController自体を再起させたいのですが、Appdelegateからやり直す方法、立ち上げ直す方法がわかりませんでした。
swift
1 @IBAction func tapLogin(_ sender: Any) { 2 if ログアウト状態だったら 3 { 4 サインイン処理実行 5 } 6 else 7 { 8 サインアウト処理実行 9 } 10 self.loadView() 11 self.viewDidLoad() 12 }
上記、viewDidLoad()の部分を、アプリを再起動するコードに書き換えたいです。
また、アプリ再起動せずとも、ViewControllerクラスをリセットして実行し直す方法があれば、教えていただけると幸いです。
よろしくお願いいたします。
iOSではアプリの再起動とかアプリの強制終了はしませんけど?
「viewDidLoad()の部分を、アプリを再起動するコードに書き換えたいです。」
そもそもviewDidLoad()の役割をご存知ですか?
それが出来るかできないかを調べても分からないため、もし出来るなら教えて頂きたいという趣旨の質問です。
以前質問したマップビューでもそうですが、質問をよく読んでいただけますでしょうか。煽ったような回答されるようなので、私の質問には回答しないで頂きたく、よろしくお願いします。
viewDidLoad は自分で呼ぶものではありません。普通はログイン画面とログイン後の画面を別々の ViewController にします。それらを切り替える方法はいろいろ考えられますが、SceneDelegate の rootViewController を切り替えるとかでしょうか。
https://qiita.com/rkamiya/items/1dccaadef01299816e3c
hoshi-takanori様
返信が遅くなり申し訳ありません。実装に時間がかかりました。
SceneDelegateでログイン判定、ViewControllerでログイン、ログアウトの画面わけをすることで解決することができました。
いざ実装できれば簡単でしたが、1つのviewで動的に切り分けることに固執しており困っていたため、新たな解決方法を提示いただき勉強になりました。
いつも大変感謝しています。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー