2012-04-11 8 views
2

Я пишу заставку. Заставка будет подключаться к серверу и получать некоторые данные. Когда данные были получены успешно, я хочу программно перейти к следующему viewcontrller. Как я могу это достичь? Его не то же самое, что нажатие кнопки? Потому что я не переадресуюсь на следующий экран, даже когда я помещаю код в свой viewDidLoad моего LoadingViewContrller.Переключение между viewControllers в Xcode

TableViewController *tvc = [[TableViewController alloc] init]; 
tvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:tvc animated:NO]; 

Я хотел бы автоматически перейти к TableViewContrller после того, как все мои данные были восстановлены.

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

- (void)fetchedData:(NSData *)responseData { 
if(responseData == nil){ 
    [ErrorViewController showError]; 
}else{ 
//methods to start parsing and adding json into array 
if(delegate){ 
    [delegate jsonReceivedData:array]; 

//codes to go to next screen should be here 
} 
} 
+0

У вас есть способ проверить, когда все данные были получены? Если да, напишите этот код, и я покажу вам, как это сделать. – AMayes

+0

@Amayes Я отредактировал код – Hexark

ответ

2

Хорошо, способ сделать это просто. Сделайте первый экран для вашего приложения таким же, как и заставка. Объявите и экземпляр NSTimer, возможно, в viewWillAppear, например, так:

mainTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 

Затем экземпляр BOOL:

- (void)fetchedData:(NSData *)responseData { 
if(responseData == nil){ 
    [ErrorViewController showError]; 
}else{ 
//methods to start parsing and adding json into array 
if(delegate){ 
    [delegate jsonReceivedData:array]; 

    myBool = YES; 
} 
} 

В методе доступа к вашему таймеру (в данном случае «updateTime») выполните следующие действия :

-(void)updateTime{ 
    if(myBool){ 
     [mainTimer invalidate]; 
     MyViewController *vC = [[MyViewController alloc] init]; 
     //pass vC information, now that it has been initialized 
     //or pass information to a singleton, from which vC can retrieve it 
     // (I can show you how to do that, too, if need be) 
     //I will assume you are using a navigationController 
     [self.navigationController pushViewController:vC animated:YES]; 
    } 
} 

ради пространства, я уезжаю из деклараций о mainTimer и myBool.

+0

Предполагая, что «заставка» означает начальный экран приложения. – AMayes

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