0

私は、ユーザーがパスワードを入力すれば、(場合によっては)アプリを開くことができるiPadアプリケーションを開発しています。したがって、LoginViewControllerのようなものが必要です。ただし、最初に、アプリがHomeViewControllerを表示するだけでよい一般的なケースを処理しましょう。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{  
    //...
    self.controllerHomeView = [[HomeViewController alloc] initWithNibName:@"HomeView" bundle:nil];
    self.controllerHomeView.showInitialGuide = isFirstLaunch;
    self.window.rootViewController = controllerHomeView;
    [self.window makeKeyAndVisible];
    //..
}

ただし、前に述べたように、一部のユーザーがパスワードを定義している可能性があるため、その場合はログイン画面を表示する必要があります。それは私がそのような機能を有効にするためにしたことです:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    //---
    if(isAppPinSecured && !loginIsAlreadyDisplaying) {
        LoginBackgroundViewController *controllerLoginBG = [[LoginBackgroundViewController alloc] initWithNibName:@"LoginBackgroundView" bundle:nil];
        self.appPinInputBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-Landscape@2x~ipad.png"]];
        self.appPinInputBG.frame = CGRectMake(0, 0, 1024, 748);
        self.appPinInputBG.userInteractionEnabled = YES;
        [controllerLoginBG.view addSubview:self.appPinInputBG];
        //present new root = background
        self.window.rootViewController = controllerLoginBG;
        //...
    }
}

私が行っているのは、ルートビューコントローラーをLoginViewControllerに変更し、ユーザーが正しいパスワードを入力した場合は、LoginViewControllerからHomeViewControllerに戻すことです。

向きを除いて、これまでのところすべてが正常に機能しています。iPadがテーブルの上に置かれているなど、現在のインターフェイスの向きが不明な場合、LoginViewControllerの向きはHomeViewControllerLandscapeLeft )の向きではなくLandscapeRightになります。iPadを手に持っていれば正しく動作しますが、そうでない場合は正しく動作しません。

その問題を修正する方法について何か提案はありますか?plistファイル(LandscapeLeft)でアプリの向きを設定しました。Home-とLoginViewControllerの両方でUIInterfaceOrientationIsLandscape(...)を使用してshouldAutorotateを実装します。

前もって感謝します!

4

2 に答える 2

1

ああ、問題は、viewDidAppearが呼び出される前にビューコントローラをモーダルにプッシュしようとしたことでした->これは絶対に行わないでください...

このエラーのために私のコードを変更した後、それは魅力のように機能しました

于 2012-11-13T10:15:34.320 に答える
0

何が起こっているのかというと、最初のルートコントローラーで優先方向が設定されていると思います。切り替えても設定されません。

常にHomeViewControllerをルートコントローラーにすることを検討することをお勧めします。そして、ルートコントローラーを切り替える代わりに、LoginViewControllerをプッシュします(すぐに表示したい場合はアニメーションなしで):

 [self.navigationController pushViewController:controllerLoginBG animated:NO]

そうすれば、ログアウトしたり、HomeViewControllerにポップしたりすることができます。また、ViewControllerのナビゲーションの一貫性を維持します。

于 2012-10-08T14:17:18.097 に答える