初心者向けの警告: IOS 13.6 で Swift 11.6 を実行しています。私は Swift の初心者で、ユーザーが以前にログインしたことがあるかどうかを確認しようとしています。このために、私はユーザーデフォルトを使用しましたが、これはうまく機能しているようです。問題は、Scenedelgate でビュー コントローラーを初期化するときに、動作していないように見えることです。黒い画面しか表示されません。
もう1つの注意点は、ホーム画面にサイドメニューがあるため、 UINavigationController を初期化し、その中の HomeViewController を初期化しようとしていることです。
シーンデリゲートのコードは次のとおりです。
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var storyboard: UIStoryboard?
var view: UIView?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else {return}
let def = UserDefaults.standard
let is_authenticated = def.bool(forKey: "is_authenticated") // return false if not found or stored value
if is_authenticated {
// user logged in
self.view?.window?.rootViewController = UINavigationController(rootViewController: HomeViewController())
self.view?.window?.makeKeyAndVisible()
}
}
編集 1: これが私のユーザー デフォルト関数の外観です。
func saveLoggedState() {
let def = UserDefaults.standard
def.set(true, forKey: "is_authenticated") // save true flag to UserDefaults
def.synchronize()
}
編集2: これが私のシミュレーターの外観です
編集 3: これが私のビュー コントローラーの外観です
編集 4: ここに問題があります。ホームビューコントローラーをプログラムで白に設定してみることにしましたが、明らかにうまくいきました。それで、私を混乱させているのは、HomeViewController にも SideMenuNavigationController にも入れたものが何も見えないということです。ボタンとラベルを付けましたが、表示されません。
アドバイスをよろしくお願いします。私は完全な初心者なので、これに関しては自分が何をしているのかよくわかりません。どんな助けでも感謝します。
ありがとう!