Задача iPhone c как выбрать контроллер представления для загрузки при запуске приложения - PullRequest
0 голосов
/ 10 февраля 2012

Я знаю, что на эту тему есть немало тем, и я попробовал каждый вариант.Но ничего не работает.

Итак, вот что у меня есть, 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;

}

У меня есть вывод NSlog в моем методе viewview viewdidload loginview, так что я знаю, что loginview загружен.Но экран черный !!!Я не знаю почему.Viewcontroller запускает метод viewdidload, но экран не выводится.

Что я делаю не так ???

благодаря dominik

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

В большинстве случаев, используя пароль, я обнаружил, что лучше всего загрузить начальный (уже авторизованный) экран, а затем проверить, нужен ли логинЕсли это так, немедленно поднимите экран входа в систему в качестве модального вида.Запустите экран входа из viewDidLoad на начальном экране.

0 голосов
/ 10 февраля 2012

Если у LoginViewController есть файл .xib, вы вызываете неправильный метод init.Вам нужен initWithNibName: bundle: метод.

Кроме того, вам не нужно вызывать [self.window addSubview:loginviewcontroller.view]; после установки контроллера корневого представления.

И если идентификатор устройства НЕ равен нулю, то выполучит пустой экран.

И loginviewcontroller теряет память.Вы должны освободить его после установки в качестве корневого контроллера.

...