在我当前的项目中,针对 iOS 5.0 及更高版本,我想显示一个带有一些按钮的视图,让用户选择当前在屏幕上绘制的布局。
在 iPhone 和 iPod Touch 上,我通过调用让选择视图控制器占据整个屏幕:
[self presentViewController:choiceController animated:YES completion:nil];
在 iPad 上,我通过调用以下命令在弹出窗口中显示相同的视图控制器的视图:
[self setChooseLayoutPopover:[[UIPopoverController alloc] initWithContentViewController:choiceController]];
[[self chooseLayoutPopover] setDelegate:self];
[[self chooseLayoutPopover] setPopoverContentSize:CGSizeMake(320.0, 460.0)];
[[self chooseLayoutPopover] presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
在这两种情况下,我将两个关闭块传递给选择视图控制器,一个用于实际选择布局时,一个用于用户取消操作时。在 iPad 上触摸弹出框边界之外确实会取消它,在 iPhone 和 iPod Touch 上,我显示了一个也可以使用的取消按钮。
在 iPhone 和 iPod Touch 上,我通过调用以下方式做出选择的关闭块:
[[self presentingViewController] dismissViewControllerAnimated:YES completion:[self dismissBlockDone]];
但在 iPadpresentingViewController
上始终为零,即使我自己使用上述调用将指针传递给呈现视图控制器,在 iPad 上也没有任何作用。
我确实实现-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
并将呈现视图控制器设置为弹出框的委托,并且当用户触摸弹出框外部时确实会调用此方法,但是在用户实际触摸选择按钮后我找不到要调用的内容。我可以设置选择的值,但我不知道之后如何摆脱弹出窗口。
有什么建议么?