使用navigationController的白色屏幕

时间:2011-09-14 20:35:56

标签: objective-c ios uiview uiviewcontroller

我必须根据返回值加载视图。这是我的代码。在构建模拟器的屏幕后保持白色。你有什么建议我应该改变吗? logInView和createNewPasswordView正在运行。如果我将它们设置为窗口的rootViewController,我可以看到它们

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
PasswordHandling *aPasswortHandler = [[PasswordHandling alloc] init]; 
self.passwordHandling = aPasswortHandler; [aPasswortHandler release]; 
UINavigationController *navigationController;
if ([passwordHandling passwordInKeyChain] == TRUE) { 
    LogInView *logInView = [[[LogInView alloc] initWithNibName: @"LogInView" bundle: nil] autorelease]; 
    navigationController = [[UINavigationController alloc] initWithRootViewController:logInView];
} else { 
     CreateNewPasswordView *createNewPasswordView = [[CreateNewPasswordView alloc] initWithNibName:@"CreateNewPasswordView" bundle: nil]; 
     navigationController = [[UINavigationController alloc] initWithRootViewController:createNewPasswordView];

}

[self.window addSubview:navigationController.view]; 
[self.window makeKeyAndVisible]; return YES;

我注意到MainWindow.Xib已加载。但那不是应该加载的xib文件

1 个答案:

答案 0 :(得分:3)

为什么要在具有nib文件的项目中以编程方式创建窗口? Nib文件是解决这类问题的正确方法,因为无论如何都要使用它们,没有充分的理由避免使用最基本的文件。

那就是说,你应该做的第一件事是替换它:

[self.window addSubview:navigationController.view]; 

有了这个:

[self.window setRootViewController:navigationController];

要调试您的问题,您应该检查您关注的所有视图的帧。我可能导致此问题的原因是至少有一个框架是CGRectZero

**编辑**

VC有自己的nib文件不是问题。问题是您应该使用MainWindow.xib创建的窗口。特别是如果你是新手,你没有理由在代码中创建你的窗口。删除你创建的窗口,确保在运行此代码时self.window不是nil,并使用setRootViewController而不是addSubview。