2012-04-11 45 views
2

私はスプラッシュ画面を書いています。スプラッシュ画面はサーバーに接続し、データを受信します。データが正常に受信されたら、プログラムで次のviewcontrllerに行きたいと思います。どうすればこれを達成できますか?ボタンクリックと同じではありませんか? LoadingViewContrllerのviewDidLoadにコードを配置しても、次の画面に転送されないためです。XcodeのviewController間の切り替え

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

さて、これを行う方法は簡単です。アプリの最初の画面をスプラッシュ画面と同じにします。宣言とインスタンス化可能性viewWillAppearでNSTimerを、そのよう:

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

が続いBOOLインスタンス化:あなたのタイマー(この場合は「updateTime」)によってアクセス方法では

- (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; 
} 
} 

を次の手順を実行します:宇宙の便宜上

-(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]; 
    } 
} 

、私はmainTimermyBoolの宣言を残しています。

+0

「スプラッシュスクリーン」とは、アプリケーションの初期画面を意味します。 – AMayes

関連する問題