首页 文章

在iPad上使用UIActionSheet

提问于
浏览
18

Apple的UIActionSheet文档让我感到困惑 . 首先,在iPad人机界面指南中,它说:

要了解有关在代码中使用操作表的更多信息,请参阅“iPad编程指南”中的“使用弹出窗口显示内容” .

但是在“使用弹出窗口显示内容”部分中,它根本没有提到动作表!我在这里错过了什么吗?

http://developer.apple.com/library/ios/#documentation/General/Conceptual/iPadHIG/UIElements/UIElements.html#//apple_ref/doc/uid/TP40009446-CH6-SW9

我的主要问题是:在iPad上,UIPopoverController和UIActionSheet有什么区别?如果UIActionSheet自动出现在UIPopoverController中,是否有任何理由使用UIActionSheet?我看到它的委托和按钮的自动创建如何减少代码行数,但从可用性POV来看,是否存在差异?

此外,显示带动画的actionSheet根本不起作用 . 它的外观和行为与没有动画时显示的actionSheet完全相同(这与我刚刚使用UIPopoverController并且根本没有使用actionSheet完全相同) . 这是我的代码:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:"
    delegate:self
    cancelButtonTitle:nil
    destructiveButtonTitle:@"Overwrite"
    otherButtonTitles:@"Open unsaved property", nil];

[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO];

我如何获得一个看起来像Apple文档中的示例动画actionSheet的actionSheet(从 Map 应用程序中,您向联系人添加位置)?

我可能最终会使用警报而不是弹出窗口或actionSheet,但理解这一点仍然有用 .

谢谢!

1 回答

  • 23

    首先, UIActionSheet 存在于 UIPopoverController 之前,并且 UIPopoverController isn 't available on iPhone, so it'对于向后兼容性和通用应用程序非常有用 .

    此外, UIActionSheet 不一定在弹出窗口中显示,特别是,如果您从已经在弹出窗口内的 UIBarButtonItemUIToolbar 中显示它 . 然后以类似于iPhone的方式呈现它(从视图控制器的底部滑入) . 根据HIG的说法,你不能同时出现多个弹出式窗口(我曾经有一个被拒绝的应用程序),所以如果视图控制器可能在弹出框内(如在标准的拆分视图应用程序中),你可以想要使用行动表,如果可能的话 . 当然,在很多情况下,您无法使用操作表替换弹出框,因为操作表只显示按钮列表和 Headers ,而弹出框可以显示任何视图控制器 .

    我认为 animated 参数仅在"classic"(如iPhone上)显示操作表时生效 .

相关问题