0

我有一個視圖,它被呈現爲一個模態視圖控制器,它使用用戶名和密碼憑證。我想要這個視圖來檢查代理,如果用戶以前沒有爲應用設置一個解鎖引腳,然後將更改引腳視圖顯示爲模式視圖控制器。這是我的代碼...在ModalViewController中呈現一個ModalViewController

+(void)presentCredentialsViewController:(UIViewController *)vc{ 
    CredentialsViewController *cvc = [[CredentialsViewController alloc] init]; 
    [vc presentModalViewController:cvc animated:FALSE]; 
} 

,然後在CredentialsViewController

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    if([appDelegate.pin isEqualToString: @""]){ 
     UserPrefsViewController *upvc = [[UserPrefsViewController alloc] init]; 
     upvc.cancelButton.hidden = true; 
     [self presentModalViewController:upvc animated:FALSE]; 
    } 
} 

但由於某種原因,這是行不通的。調試器在沒有錯誤的情況下遍歷代碼,永遠不會出現錯誤,不會顯示第二個模式視圖控制器。

+1

如果你把這段代碼放在'viewDidAppear'中怎麼辦? – Jilouc

回答

2

首先,我會建議檢查您的appDelegate.pin是空白的而不是零。如果它是零,if語句不會被滿足,你的第二個ModalView將不會被顯示。

您可能還想嘗試先前的建議,請致電presentModalViewControllerviewDidAppear,或設置延遲,如果將其留在viewDidLoadCredentialsViewController可能會在第二個視圖尚未呈現時嘗試呈現第二個視圖。

0

if語句正在被擊中,第二個PresentModalViewController正在執行而沒有錯誤,但它沒有顯示。我曾嘗試將代碼放入ViewDidAppear以及其他地方,例如applicationWillBecomeActive等。雖然實際上沒有崩潰代碼,但這些方法都不會顯示視圖控制器。最後,我選擇了這個:

start with pin of @"" 
on applicationDidEnterBackground check if pin has been set 
if yes 
PresentModalViewController: PinViewController 
if no 
do nothing 

一點點的黑客,但它現在會做。我想我應該在某處警告引腳沒有被設置。關於延遲的建議可能可以工作,我想。我將來可能會放棄它。感謝球員....點起來!