首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIWindow UIWindow控制器-方向错误

UIWindow UIWindow控制器-方向错误
EN

Stack Overflow用户
提问于 2012-10-08 12:37:03
回答 2查看 1.7K关注 0票数 0

我正在开发一个iPad应用程序,用户只要输入密码,就可以(在某些情况下)打开应用程序。因此,我需要像LoginViewController这样的东西。但是首先,让我们来处理常见的情况,在这种情况下,应用程序只需要显示HomeViewController:

代码语言:javascript
复制
- (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];
    //..
}

但是,正如我前面所说,一些用户可能已经定义了密码,如果是这样,我们需要显示一个登录屏幕。这就是我为启用这样一个功能所做的工作:

代码语言:javascript
复制
- (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,如果用户输入正确的密码,则将返回到HomeViewController.。

到目前为止,一切都很顺利,除了方向。如果当前接口方向未知,因为LoginViewController (例如,放置在表上的)是LandscapeRight,而不是HomeViewController (LandscapeLeft).中的iPad如果将iPad握在手中,它就会正常工作,但在其他情况下则不然。

关于如何解决这个问题,有什么建议吗?我在plist文件中设置了我的应用程序方向(左风景)。我确实用shouldAutorotate (.)实现了UIInterfaceOrientationIsLandscape无论是在家还是在LoginViewController。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-13 10:15:34

啊,问题是,在viewDidAppear被称为->之前,我试图以模式方式推送一个视图控制器--你不应该这样做……

由于这个错误而更改了我的代码之后,它就像一种魅力一样工作。

票数 1
EN

Stack Overflow用户

发布于 2012-10-08 14:17:18

我认为正在发生的情况是,首选的方向是在初始根控制器上设置的--当您将其切换出去时,它不会被设置。

我建议您考虑始终将HomeViewController作为根控制器。与其切换根控制器,不如推送LoginViewController (如果您希望它立即显示,则没有动画):

代码语言:javascript
复制
 [self.navigationController pushViewController:controllerLoginBG animated:NO]

这样,您就可以进行诸如注销和弹出HomeViewController之类的工作。它还将保持视图控制器导航的一致性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12781898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档