2012-02-10 3 views
0

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

Итак, вот что у меня есть, loginviewcontroller и tabbarviewcontroller. Если устройство уже зарегистрировано, появится вкладка, если не loginview. У меня есть 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 в моем методе LoginView viewdidload, так что я знаю, что загружен LoginView. Но экран черный! Я не знаю, почему. Viewcontroller запускает метод viewdidload, но просто нет вывода на экран.

Что делать неправильно?

благодаря Dominik

+0

NSLog (@ "устройство не зарегистрировано"); вы получили это в журнале? – hchouhan02

+0

У вас определенно «окно» подключено? Если вы 'NSLog (@"% @ ", self.window)', тогда вы получаете значимый результат? – Tommy

+0

да, я получаю журнал «устройство не зарегистрировано» !! –

ответ

0

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

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

И если deviceId не равно null, вы получите пустой экран.

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

+0

Привет, я работаю с stroyboard, поэтому нет .xib-файла только для loginviewcontroller. Дело в том, что это не первое приложение, где мне нужна подобная вещь. Последний раз с ios4 и без раскадровки было проще. –

+0

BTW: ios4.2 с sdk5 не позволяет выпустить из-за ARC. –

0

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

+0

хорошая идея, я попробую завтра, спасибо. Иногда, когда вы так «в» проблема, вы просто не видите что-то еще;) –

+0

Какой метод лучше всего будет использовать для модального просмотра? viewdidload или viewwillapear? или любые другие внушения? –

+0

Звонок, который вы ищете, присутствуетModalViewController: анимированный: –

Смежные вопросы