当前位置: 首页 > 知识库问答 >
问题:

iIOS8 GM Popover的UIActionSheet

谷梁俊楚
2023-03-14

有人在试图从popover显示UIActionSheet时收到此消息吗?

您的应用程序提供了UIAlertController()风格的UIAlertControlllerStyleActionSheet。具有此样式的UIAlertController的modalPresentationStyle是UIModalPresentationPopover。您必须通过警报控制器的popoverPresentationController提供此弹出窗口的位置信息。您必须提供源视图和源Rect或barButtonItem。如果在显示警报控制器时不知道此信息,则可以在UIPopoverPresentationControlller委托方法-preareForPopoverPresations中提供。

在GM之前,我使用了一些变通方法将UIActionSheet转换为UIAlertController,这很好。然而,苹果似乎试图解决UIActionSheet问题,而我不想使用我的变通方法——但似乎我别无选择。。。

共有3个答案

丌官炎彬
2023-03-14

您需要为iPad提供popoverPresentationController。在这种情况下,您可以指定barButtonItemsourceView。另一个线程可能会帮助您:Swift UIAlertController-ActionSheet iPad iOS8崩溃

子车劲
2023-03-14

如果您在用户对UITableView中的单元格进行选择后显示操作表。我发现这工作得很好:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Directions" 
                                                               message:@"Select mode of transportation:"
                                                        preferredStyle:UIAlertControllerStyleActionSheet];
alert.popoverPresentationController.sourceView = cell;
alert.popoverPresentationController.sourceRect = cell.bounds;
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
//...
[self presentViewController:alert animated:YES completion:nil];
符功
2023-03-14

要支持iPad,请包含以下代码:

alertView.popoverPresentationController?.sourceView = self.view
alertView.popoverPresentationController?.sourceRect = self.view.bounds
// this is the center of the screen currently but it can be any point in the view

self.presentViewController(alertView, animated: true, completion: nil)
 类似资料:
  • 我有一个带有tabbarcontroller的应用程序,两个带有它的controller,现在在一个controller中我以肖像模型显示了uiactionsheet: UIActionSheet*ActionSheet=[[UIActionSheet alloc]InitWithTitle:@""Delegate:nil CancelButtonTitle:@"Cancel"Destructiv

  • 问题内容: 此处给出的ThreadLocal的目的是,该变量对于任何访问包含ThreadLocal变量的对象的线程都是局部的。将ThreadLocal变量作为类的成员,然后使其成为Thread的局部变量,而不是使Thread本身具有局部变量,这有什么区别? 问题答案: 线程是执行的单元,因此多个线程可以同时执行相同的代码。如果多个线程同时在一个对象/实例上执行,它们将共享实例变量。每个线程都有其自

  • 问题内容: 对于我的项目,我必须创建一个代理AppDelegate,该代理将把调用转发到另一个AppDelegate。 UIApplicationDelegate有一个。我的问题是,为什么我不能这样做: 该代码的问题是。 有人知道为什么吗? 问题答案: 该物业的协议,声明如下: 这意味着它是一个 可选属性 (在某种意义上,“ 不需要请求 实现协议的类 来实现/具有此属性 ”,就像 在Objecti

  • 问题内容: 我正在使用下面的代码将数据发送到TCP服务器。我假设我需要使用正确地指示客户端已完成发送请求。我的假设正确吗?如果不行,请让我知道目的。也感谢我可以做的任何进一步的优化。 客户 服务器 问题答案: 表示客户端已完成通过TCP连接的所有数据发送。它将发送剩余的数据,然后发送终止序列,该序列将完全关闭其OUTGOING连接。无法发送任何进一步的数据,这也将向您的程序表明请求已完全完成。因此

  • 问题内容: 我可以想到的对于Python类的每次使用,我都可以想到另一个同样(可能更多)可接受的解决方案,以实现相同的效果。例如: 在任何情况下,这都是最合适的解决方案吗?如果是这样,在什么情况下? 问题答案: 该函数是惰性的;它仅使用一项所需的内存。另一方面,和惯用法在内存中创建对象的n个副本。对于五个项目,乘法习惯用法可能更好,但是如果必须重复一百万次,您可能会注意到资源问题。 不过,很难想象

  • 本文向大家介绍iOS中的表单按钮选项UIActionSheet常用方法整理,包括了iOS中的表单按钮选项UIActionSheet常用方法整理的使用技巧和注意事项,需要的朋友参考一下 什么是操作表单?看图: 一看图就明白了,毋需多说。 与UIAlertView类似,我们也是在委托方法里处理按下按钮后的动作。记得在所委托的类加上UIActionSheetDelegate。 看到那个红色的按钮没?那是