我有一个视图,它被呈现为一个模态视图控制器,它接受用户名和密码凭据。我希望这个视图检查代理,如果用户之前没有为应用程序设置解锁pin,则将change 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];
}
}
但由于某些原因,它不起作用。调试器遍历代码时不会出错,也不会显示第二个模式视图控制器。
发布于 2011-08-24 00:24:01
首先,我建议检查您的appDelegate.pin
是否为空,而不是nil。如果它是空的,If语句将不会被满足,并且您的第二个ModalView将不会被呈现。
您可能还想尝试前面的建议,从viewDidAppear
调用presentModalViewController
,或者如果将其留在viewDidLoad
中,则设置延迟。有可能CredentialsViewController
正在尝试呈现第二个视图,而它还没有呈现自己。
发布于 2011-08-24 16:48:28
if语句正在被命中,第二个PresentModalViewController正在执行,没有错误,但它就是没有显示。我确实尝试过将代码放在ViewDidAppear和其他很多地方,比如applicationWillBecomeActive等。虽然这些方法都不会导致代码崩溃,但它们都不会显示视图控制器。最后,我选择了这个:
start with pin of @""
on applicationDidEnterBackground check if pin has been set
if yes
PresentModalViewController: PinViewController
if no
do nothing
这是一个小技巧,但现在就可以了。我想我应该在某个地方放置某种通知,警告还没有设置引脚。我想,关于延期的建议可能会奏效。我可能会在未来试一试。感谢guys....points up!
https://stackoverflow.com/questions/7163558
复制相似问题