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 

一点点的黑客,但它现在会做。我想我应该在某处警告引脚没有被设置。关于延迟的建议可能可以工作,我想。我将来可能会放弃它。感谢球员....点起来!