簡體   English   中英

UIWindow rootviewcontroller-方向錯誤

[英]UIWindow rootviewcontroller - wrong orientation

我正在開發一個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方向為LandscapeRight,而不是HomeViewControllerLandscapeLeft )中的方向。 如果將iPad握在手中,它可以正常工作,否則,則不能正常工作。

關於如何解決該問題的任何建議? 我確實在plist文件(左橫向)中設置了應用程序方向。 我確實在Home和LoginViewController中都使用UIInterfaceOrientationIsLandscape(...)實現了shouldAutorotate。

提前致謝!

糟糕,問題在於,我試圖在調用viewDidAppear之前以模態方式推送視圖控制器->絕對不要這樣做...

由於此錯誤更改我的代碼后,它就像一個魅力

我認為正在發生的事情是首選的方向是在初始根控制器上設置的-當您將其切換出時,它不會被設置。

我建議您考慮始終使HomeViewController成為根控制器。 而不是切換根控制器,請按下LoginViewController(如果希望它立即顯示,則不顯示動畫):

 [self.navigationController pushViewController:controllerLoginBG animated:NO]

這樣,您將可以執行注銷和彈出HomeViewController之類的操作。 它還將使您的視圖控制器導航保持一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM