I have a view which is presented as a modal view controller which takes username and password credentials. I want this view to check the delegate, and if the user hasn’t previously set an unlock pin for the app, to then show the change pin view as a modal view controller. This is my code…
+(void)presentCredentialsViewController:(UIViewController *)vc{
CredentialsViewController *cvc = [[CredentialsViewController alloc] init];
[vc presentModalViewController:cvc animated:FALSE];
}
and then in CredentialsViewController
-(void)viewDidLoad{
[super viewDidLoad];
if([appDelegate.pin isEqualToString: @""]){
UserPrefsViewController *upvc = [[UserPrefsViewController alloc] init];
upvc.cancelButton.hidden = true;
[self presentModalViewController:upvc animated:FALSE];
}
}
But for some reason it doesn’t work. The debugger steps through the code without error, never the less, the second modal view controller isn’t displayed.
First, I would suggest checking that your
appDelegate.pinis blank and not nil. If it is nil, the if statement would not be satisfied and your second ModalView would not be presented.You may also want to try the previous suggestion, calling
presentModalViewControllerfromviewDidAppear, or setting a delay if leaving it inviewDidLoad. It is possible that theCredentialsViewControlleris trying to present the second view when it has not yet presented itself.