ログイン画面をモーダルに表示する必要があり、アプリにタブバーがあるアプリケーションを作成しています。
タブバーを UIWindow に直接追加しました。新しいビュー (ログイン ビュー) に切り替えるには、applicationDidFinishLaunching をオーバーライドして、ユーザーがログイン資格情報を持っているかどうかを確認し、それ以外の場合はログイン画面を表示しません (初回使用またはログアウトの場合を想定して) ログイン画面をモーダルに表示します。アプリ内の設定タブでログアウトのオプションを提供しました。
[[UIApplication sharedApplication] delegate] 呼び出しを使用して、ユーザーが初めてログインしたときにアプリ デリゲートのインスタンスを取得しています。このようにして、Application Delegate の一部である tabBarController にアクセスできます (ほとんどの場合)。ただし、設定のログアウト オプションから loginViewController を呼び出そうとすると (将来のライフ サイクルのどこかで)、同じ [[UIApplication sharedApplication] delegate] を呼び出すと、メソッドを使用できないデリゲートが返されます。定義しました。実行時に「認識されないセレクターがインスタンスに送信されました」というエラーが表示されます。
[[UIApplication sharedApplication] delegate] の呼び出しが正確に何を返すかを理解する必要がありますか? 返されるデリゲート オブジェクトは、アプリケーションのライフ サイクルの期間中に変更されますか? それとも、アプリのライフ サイクル全体を通してシングルトン インスタンスですか?
次に、これを解決するために、タブバーを UIWindow に直接追加するのではなく、ビュー (メインウィンドウに含まれる) に追加する必要があります (タブバーアプリケーションのテンプレートで行われ、標準的な方法のようです)。このアプローチには既知の問題がありますか、それとも問題ありませんか。誰もこれを試しましたか?私にお知らせください。
ありがとうございます。