3

我使用以下代码将设置页面称为 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];
}

当设置页面被调用和关闭时,viewDidAppear 和 viewWillAppear 仅在 iPad 上不会在原始页面上调用。在 iPhone 上,由于它不是表单,它可以完美运行,此外,当我将 iPad 上的设置页面作为常规模式视图而不是表单调用时,它们都会被调用。请帮忙。谢谢!

4

1 回答 1

0

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

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

我希望它有所帮助。

于 2014-02-20T19:23:55.210 回答