在iPad上没有调用viewDidAppear和viewWillAppear

时间:2012-05-22 18:16:13

标签: iphone modalviewcontroller viewwillappear viewdidappear uimodalpresentationstyle

我使用以下代码在viewController上调用设置页面作为表单:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *device = [standardUserDefaults objectForKey:@"Device"];
if ([device isEqualToString:@"iPhone"]) {
    Settings_iPhone *screen = [[Settings_iPhone alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}
if ([device isEqualToString:@"iPad"]) {    
    Settings_iPhone *screen = [[Settings_iPhone alloc] initWithNibName:@"Settings_iPad" bundle:nil];
    screen.modalPresentationStyle = UIModalPresentationFormSheet;
    screen.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

当调用和关闭设置页面时,仅在iPad上的原始页面上不会调用viewDidAppear和viewWillAppear。在iPhone上,由于它不是一个表单,它可以很好地工作,而且当我将iPad上的设置页面称为常规模态视图而不是表单时,它们都会被调用。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在呈现之前将父视图控制器的值传递给模态视图(只需添加属性并保留引用)。在模态视图中完成后,在父项上调用一个方法(在这个中你可以传递任何需要传递给父视图-(void)imDone:(NSObject yourValue)的方法,并在 Parent <上调用dismiss / strong>(dismissViewController:Animated:)。

您可以在iPhone和iPad上使用此方法。

我希望它有所帮助。