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

UIAlertController中的UIPickerView仅在iPad中给出错误,而在iPhone中正确吗?

薛修能
2023-03-14

我使用以下代码警报视图,它在iPhone中工作。但是当我在iPad中运行它时,它会出现以下错误:

由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“您的应用程序已呈现UIAlertControllerStyleActionSheet样式的UIAlertController()。具有此样式的UIAlertController的modalPresentationStyle为UIModalPresentationPopover。您必须通过警报控制器的popoverPresentationController提供此popover的位置信息。必须提供sourceView和sourceRect或barButtonItem。如果在演示警报控制器时不知道此信息,则可以在UIPopoverPresentationControllerDelegate方法-PrepareForPoverPresentation中提供此信息。”

警报视图代码如下:

let alertView = UIAlertController(title: "Select Launguage", message: "\n\n\n\n\n\n\n\n\n\n", preferredStyle: UIAlertControllerStyle.ActionSheet);

   pickerView.center.x = self.view.center.x

    alertView.view.addSubview(pickerView)

    let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)

    alertView.addAction(action)
    presentViewController(alertView, animated: true, completion: nil)

请帮帮我。为什么它不能在iPad上运行。。。

共有1个答案

游鸣
2023-03-14

在iPad上,警报将使用UIPopoverPresentationController显示为popover,它要求您为popover的显示指定一个锚点。

UIViewController *self; // code assumes you're in a view controller
UIButton *button; // the button you want to show the popup sheet from

UIAlertController *alertController;
UIAlertAction *destroyAction;
UIAlertAction *otherAction;

alertController = [UIAlertController alertControllerWithTitle:nil
                                                      message:nil
                           preferredStyle:UIAlertControllerStyleActionSheet];
destroyAction = [UIAlertAction actionWithTitle:@"Remove All Data"
                                         style:UIAlertActionStyleDestructive
                                       handler:^(UIAlertAction *action) {
                                           // do destructive stuff here
                                       }];
otherAction = [UIAlertAction actionWithTitle:@"Blah"
                                       style:UIAlertActionStyleDefault
                                     handler:^(UIAlertAction *action) {
                                         // do something here
                                     }];
// note: you can control the order buttons are shown, unlike UIActionSheet
[alertController addAction:destroyAction];
[alertController addAction:otherAction];
[alertController setModalPresentationStyle:UIModalPresentationPopover];

UIPopoverPresentationController *popPresenter = [alertController 
                                              popoverPresentationController];
popPresenter.sourceView = button;
popPresenter.sourceRect = button.bounds;
[self presentViewController:alertController animated:YES completion:nil];
 类似资料:
  • 问题内容: 我正在使用IntelliJ中的Google App Engine。我正在尝试在我的JSP中使用JSTL标记。我尝试了在互联网上找到的两个不同的URI,它们都给我错误: 和 它将网址变红并表示无法解析taglib。我尝试删除URL的不同部分以查看是否- 给我任何自动完成的爱,但没有运气。 我需要做些什么才能使这项工作吗? 问题答案: 确保将JSTL库jar添加到模块依赖项中。

  • 问题内容: 我的编码是 错误是 问题答案: NLTK中的MaltParserAPI仅有一个修补程序,该修补程序修复并稳定了其以前存在的问题: 这是如何在NLTK中使用MaltParser API的示例: (参见这里更多的演示代码或这里的比较详细的演示代码) 请注意,您还可以使用导出功能,并且可以在初始化对象时避免使用完整路径。但是您仍然必须告诉对象要查找的解析器目录的名称和模型文件名,例如

  • 问题内容: 我在代码中发现了一个非常奇怪的错误,该错误仅在Release版本中发生。在我看来,这似乎是Swift的错误,但请告诉我您的想法。 实例化AccessorBugTest时,它应该打印 但在Release版本中可以打印, 如果删除未使用的属性和,则问题已解决,不知道为什么。另外,如果我做,,,int类型而不是枚举,然后重新正常工作。 知道发生了什么吗? 我已将该程序上传到:https :

  • 我使用和以及开发了一个Java web应用程序。我的应用程序在本地pc上运行,没有任何错误。 但是在我托管了我的应用程序之后,我无法访问servlet。它给了我错误。我不习惯在我的应用程序中映射servlet。我使用了。 托管服务器使用和。 可能是什么问题?我该怎么解决这个问题? 新更新 我购买主机的地方给了我上传文件的。tomcat中没有上传文件的地方,也没有上传文件到director的地方。所

  • 这个错误与ruby代码有关,我该如何修复它? 配置: 日志存储日志: {:时间戳=

  • 我在mac os中使用pip安装opencv python。现在是cv2。imshow函数给出以下错误 OpenCV错误:未指定的错误(函数未实现。使用Windows、GTK 2. x或Carbon支持重建库。如果你在Ubuntu或Debian上,安装libgtk2.0-dev和pkg-config,然后在cvShowImage中重新运行cmake或配置脚本) 我如何解决这个问题?为什么pip不检