2014-06-11 5 views
0

사용자가 내 앱에 로그인하면 POST 요청을 사용하여 내 서버에 사용자 프로필을 전송하고 성공하면 내 컨트롤러에 알리고 성공 블록을 호출하여 segue는 작동하지 않지만 아무 일도 일어나지 않습니다.비동기 블록에서 segue 수행

다음 블록의 내 코드 :

RemoteCallManager *rcm = [[RemoteCallManager alloc] init]; 

if (![[NSUserDefaults standardUserDefaults] boolForKey:IS_FIRST_LAUNCH]) 
{ 
    // Is first launch 
    [rcm sendNewUserProfile:self.player andSuccessBlock:^(NSDictionary *result) { 

     [[Utils sharedInstance] extractAndSaveSessionDataWithResultFromRequest:result]; 

     [(AppDelegate*)[[UIApplication sharedApplication] delegate] setPlayer:self.player]; 
     [(AppDelegate*)[[UIApplication sharedApplication] delegate] archivePlayerObject]; 
     [(AppDelegate*)[[UIApplication sharedApplication] delegate] archiveGameSession]; 

     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:IS_FIRST_LAUNCH]; 

     [self performSegueWithIdentifier:@"pushToMenu" sender:self]; 

    } andErrorBlock:^(NSString *description) { 
     NSLog(@"An error occured : %@", description); 
    }]; 
} 
else 
{ 
    // Is not first launch 
    [self performSegueWithIdentifier:@"pushToMenu" sender:self]; 
} 

내가 성공하지 dispatch_sync에 SEGUE 전화를 시도했다.

도움 주셔서 감사합니다.

+0

앱이 'prepareForSegue :'를 통과합니까? mainthread 만 UI를 업데이트 할 수 있기 때문에 배경/전경과 관련된 문제 일 수 있습니까? – Larme

+0

예. 통과합니다. 그것은 내가 mainthread에 대해 생각한 것입니다. 그래서 dispatch_sync를 사용하여 주 스레드에서 segue를 수행하려고했지만 – Nonouf

+0

*을 사용합니다. 그러나 dispatch_sync (dipsatch_get_main_queue(), ...)를 사용하면 segue가 수행되지 않습니다 – Nonouf

답변

0

마침내 나는 내 오류를 발견했지만 실제로 그 이유를 알지 못합니다. loadViewController는 첫 번째보기 컨트롤러가 loginViewController 또는 menuViewController인지 여부를 결정합니다. 로그인 후에는 segue를 사용하여 loginViewController를 menuViewController로 푸시합니다.

loadingVC와 loginVC 사이에는 모달 세그가 있었고 loginVC와 menuVC 사이에는 푸시 세그가있었습니다. 모달을 푸시로 변경하면 잘 작동합니다.

내 segue가 모달로 수행되지 않는 이유를 알지 못합니다. 누군가 대답이 있다면, 나는 그것을 가지고 갈 것이다 :)

당신의 도움에 감사드립니다.

0

dispatch_sync에서 메인 대기열을 전환 했습니까? 당신이 전화를 기다릴 필요가없는 것 같아서 dispatch_async(dispatch_get_main_queue() ...을 사용해야한다고 생각합니다.

+0

예, 사용했습니다. : dispatch_async (dispatch_get_main_queue(),^{[self performSegueWithIdentifier : @ "pushToMenu"sender : self];}); 그것은 segue로 들어가지만 아무 일도 일어나지 않았다. – Nonouf

관련 문제