0

我知道有很多关于这个话题的话题,我尝试了每一个选项。但没有任何效果。

所以,这就是我所拥有的,一个 loginviewcontroller 和一个 tabbarviewcontroller。如果设备已经注册,标签栏应该出现,如果不是登录视图。我有 tabbarviewcontoller 作为情节提要中的初始视图控制器。如果设备已注册,则此方法有效。这就是我基本上所做的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

//define viewcontroller
LoginViewController *loginviewcontroller = [[LoginViewController alloc]init];

//check if device id in coredata
NSString *deviceId = [self retrieveFromUserDefaults:cKey_DeviceId];
if(deviceId == nil){
    NSLog(@"device not registered");
    [self.window setRootViewController:loginviewcontroller];
    [self.window addSubview:loginviewcontroller.view];
}

//show them
[self.window makeKeyAndVisible];

return YES;

}

我的 loginview viewdidload 方法中有一个 NSlog 输出,所以我知道 loginview 已加载。但是屏幕是黑的!!!我不知道为什么。viewcontroller 运行 viewdidload 方法,但是没有屏幕输出。

我做错了什么???

谢谢多米尼克

4

2 回答 2

0

在大多数情况下使用密码,我发现最好加载初始(已登录)屏幕,然后检查是否需要登录。如果是,请立即将登录屏幕设置为模态视图。在初始屏幕中从 viewDidLoad 启动登录屏幕。

于 2012-02-10T20:13:55.033 回答
0

如果 LoginViewController 有一个 .xib 文件,则说明您调用了错误的 init 方法。你想要 initWithNibName:bundle: 方法。

此外,您不需要[self.window addSubview:loginviewcontroller.view];在设置根视图控制器后调用。

如果 deviceId 不为空,那么您将看到一个空白屏幕。

并且 loginviewcontroller 正在泄漏内存。您应该在将其设置为根视图控制器后释放它。

于 2012-02-10T18:16:27.357 回答