在iPad上使用UIActionSheet

18

苹果的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的理由?我看到它的代表和自动创建按钮使得代码行数更少,但从可用性的角度来看,是否存在差异?

此外,使用动画显示我的actionSheet根本不起作用。它的外观和行为与未使用动画呈现的actionSheet完全相同(这与我根本不使用actionSheet和UIPopoverController完全相同)。这是我的代码:

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];

如何获得一个类似于苹果文档中示例动画 actionSheet 的 actionSheet(来自地图应用程序,在其中将位置添加到联系人)?

我可能最终会使用警报而不是弹出窗口或操作表,但了解这一点仍然很有用。

谢谢!

1个回答

23

首先,UIActionSheetUIPopoverController 之前就存在了,在 iPhone 上也没有 UIPopoverController,所以它对于向后兼容和通用应用程序很有用。

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

我认为只有在以“经典”方式(如 iPhone 上)呈现操作表时,animated 参数才会起作用。


2
非常有用!你说过:“当然,有很多情况下你不能用操作表替换弹出窗口,因为操作表只显示一个按钮列表和标题,而弹出窗口可以显示任何视图控制器。”所以,无法呈现日期选择器,我错了吗?谢谢。 - Lorenzo B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接