我知道有很多关于该主题的主题,我尝试了每一个选项。但没有任何作用。
所以,这里有我的,一个loginviewcontroller和一个tabbarviewcontroller。如果设备已经注册,则应显示标签栏,如果不是登录视图。我将tabbarviewcontoller作为storyboard中的初始视图控制器。如果设备已注册,则此方法有效。 这就是我基本上做的事情:
- (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方法,但是没有屏幕输出。
我做错了什么???
感谢 多米尼克
答案 0 :(得分:0)
如果LoginViewController有.xib文件,则调用错误的init方法。你想要initWithNibName:bundle:方法。
此外,设置根视图控制器后,无需调用[self.window addSubview:loginviewcontroller.view];
。
如果deviceId不为null,那么你将得到一个空白屏幕。
loginviewcontroller正在泄漏内存。您应该在将其设置为根视图控制器后将其释放。
答案 1 :(得分:0)
在大多数情况下使用密码,我发现最好加载初始(已登录)屏幕,然后检查是否需要登录。如果是,立即将登录屏幕作为模态视图。在初始屏幕中从viewDidLoad启动登录屏幕。