2014-03-01 42 views
0

我有三個View Controller VC1,VC2和VC3。iOS - 在解散其他視圖控制器後立即查看控制器

VC2是第三方庫,它在VC1上呈現。

然後VC2解散自己併發送一個回調給VC1,並且VC1嘗試在自身上呈現VC3,但是失敗。

解除VC2後立即呈現VC3有什麼辦法嗎?

-(void)onDismisLoginVC{ 

    MessageVC *messageVC = [[MessageVC alloc] initWithNibName:@"MessageVC" bundle:nil]; 
    [self.navigationController presentViewController:messageVC animated:YES completion:NULL]; 

} 

可惜我不能使用VC2駁回呈現視圖 - 控制的^completion塊,因爲我剛剛收到回調到這種方法並不能編輯VC2的代碼。

+1

請分享您的代碼 – meda

+0

如果你不告訴我們的代碼,並沒有告訴我們什麼是「你的情況」等,其IOS支持你,比你不能指望幫助,我想。 –

+0

爲什麼不呈現vc3而沒有解散,然後在最後解散...... – Wain

回答

5

我知道我們總是把nil作爲完成塊......但它確實有一定的用處。我向你們保證。

[self dismissViewControllerAnimated:YES completion:^{ 
    //code to be executed with the dismissal is completed 
    // for example, presenting a vc or performing a segue 
    }]; 
+0

這個解決方案剛剛爲我工作,但在目前的情況下,我不能使用完成塊。 – Adnan

+4

我不知道如何幫助你,如果你不分享代碼,然後聲稱完成塊不起作用,並不能解釋爲什麼。 – nhgrif

-2

感謝您的幫助球員。在呈現VC3之前添加一點點延遲解決了問題。

-(void)onDismisLoginVC{ 

[self performSelector:@selector(presentMessageVC) withObject:self afterDelay:1]; 

} 

-(void)presentMessageVC 
{ 

MessageVC *messageVC = [[MessageVC alloc] initWithNibName:@"MessageVC" bundle:nil]; 
[self.navigationController presentViewController:messageVC animated:YES completion:NULL]; 

} 
+1

'-performSelector:withObject:afterDelay:'是壞的,如果你沒有使用它真的特定情況下(你問題不是這種情況)。 – derpoliuk

5

這是我用來解僱Facebook登錄視圖控制器的人。

UIViewController *theTrick = self.presentingViewController; 
UIViewController *toPresent = [self.storyboard instantiateViewControllerWithIdentifier:@"toPresentViewController"]; 

[self dismissViewControllerAnimated:YES completion:^{ 
    [theTrick presentViewController:toPresent animated:YES completion:nil]; 
}]; 
相關問題