0

我有一个视图,它显示为模式视图控制器,它采用用户名和密码凭据。我希望这个视图检查委托,如果用户之前没有为应用程序设置解锁 pin,然后将更改 pin 视图显示为模态视图控制器。这是我的代码...

+(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];
    }
}

但由于某种原因,它不起作用。调试器在没有错误的情况下单步执行代码,而且不会显示第二个模态视图控制器。

4

2 回答 2

2

首先,我建议检查您的appDelegate.pin是否为空白而不是零。如果它为 nil,则不会满足 if 语句,并且不会显示您的第二个 ModalView。

您可能还想尝试以前的建议,presentModalViewController从调用viewDidAppear,或者如果将其留在 中则设置延迟viewDidLoad。有可能CredentialsViewController当它还没有呈现自己时,它正在尝试呈现第二个视图。

于 2011-08-23T16:24:00.610 回答
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

有点hack,但现在可以了。我想我应该在某处发出某种通知,警告该引脚尚未设置。我想关于延迟的建议可能会奏效。我将来可能会试一试。谢谢大家....点了!

于 2011-08-24T08:48:28.267 回答