如何修复“UIPopoverController 已弃用”警告?

2024-02-15

我正在使用这段代码:

mediaLibraryPopover = [[UIPopoverController alloc] 
                        initWithContentViewController:avc];
[self.mediaLibraryPopover presentPopoverFromRect:[theButton bounds] 
                          inView:theButton 
                          permittedArrowDirections:UIPopoverArrowDirectionAny 
                          animated:YES];

我在 Xcode 7 中收到此警告:

UIPopoverController 已弃用,首先在 iOS 9.0 中弃用 - UIPopoverController 已弃用。弹出窗口现在被实现为 UIViewController 演示。使用 UIModalPresentationPopover 和 UIPopoverPresentationController 的模态呈现样式。


你不再需要UIPopoverController用于呈现视图控制器。 相反,您可以设置modalPresentationStyle视图控制器的UIModalPresentationPopover.

您可以使用以下代码:

avc.modalPresentationStyle = UIModalPresentationPopover;
avc.popoverPresentationController.sourceView = theButton;
[self presentViewController:avc animated:YES completion:nil];

UIModalPresentationPopover

在水平规则环境中, 内容显示在弹出视图中的演示风格。 背景内容变暗并点击弹出窗口之外的原因 要关闭的弹出窗口。如果您不想点击来关闭 popover,您可以将一个或多个视图分配给 passthroughViews 关联的 UIPopoverPresentationController 对象的属性, 您可以从 popoverPresentationController 属性中获取它。

在水平紧凑的环境中,此选项的行为与 UIModalPresentationFullScreen。

适用于 iOS 8.0 及更高版本。

参考UIModalPresentationStyle 参考 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/c/tdef/UIModalPresentationStyle


您需要设置sourceView or barButtonItem属性,否则它将崩溃并显示以下消息:

*** 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“UIPopoverPresentationController (***) 应该有一个非零 sourceView 或 barButtonItem 在演示发生之前设置。

为了正确锚定弹出箭头,您需要指定sourceRect财产也。

avc.modalPresentationStyle                   = UIModalPresentationPopover;
avc.popoverPresentationController.sourceView = self.view;
avc.popoverPresentationController.sourceRect = theButton.frame;
[self presentViewController:avc animated:YES completion:nil];

Refer 源视图 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPopoverPresentationController_class/index.html#//apple_ref/occ/instp/UIPopoverPresentationController/sourceView and 源矩形 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPopoverPresentationController_class/index.html#//apple_ref/occ/instp/UIPopoverPresentationController/sourceRect更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复“UIPopoverController 已弃用”警告? 的相关文章

  • NSURL URLWithString:引发异常

    简而言之 NSURL URLWithString 似乎引发了一个例外 根据文档 如果字符串格式错误 则返回 nil 没有提到在任何情况下都会引发异常 除此之外 我还对 URL 进行编码并检查nil在将字符串转换为 URL 之前 任何人都可以
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画
  • UISplitViewController - 推送模态视图

    使用 UISplitViewController 时推送模态视图的最佳实践是什么 您会从 RootViewController DetailViewController 还是直接从应用程序委托推送 理想情况下 我想要实现的功能是在基于某些条
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道

    我正在探索 WatchKit SDK 当我有 WatchKit 应用程序时 是否可以在 WatchKit 应用程序上从 iPhone 应用程序设置值 例如文本 设置 我可以从 iPhone 应用程序调用 WatchKit 应用程序扩展中的函
  • 如何在 Swift 3 中解析 JSON 数组 [重复]

    这个问题在这里已经有答案了 我从 Socket 获取了一些我想访问的数据 但收到错误消息 指出每次都无法将 NSArray 转换为 NSDictionary struct SocketEventHandler let event Strin
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • Swift 3:如何去除UITableView屏幕截图的灰色区域

    我在从桌面视图的屏幕截图中删除灰色区域时遇到了问题 这是我尝试截图时的输出UITableView 实际上我隐藏了一些tableViewCell这是不需要的 可能这就是区域显示灰色的原因 任何帮助表示赞赏 非常感谢 Answer 我通过使用
  • iOS中的performSelector有什么用

    的作用是什么执行选择器 比较 self btnClicked and self performSelector selector btnClicked void btnClicked NSLog Method Called 两者都对我来说工
  • 玻璃效果 UIView

    我想知道如何在 UIView 上添加玻璃效果 我想像这样的效果 http pttrns com pickers detail 0dc9d9f6c6a7577613b3453768eee3b3在灰色半透明视图上 您 可以在这里看到 Thank
  • ITMS-90535 无法使用最新的 Google Signin SDK 发布 iOS 应用程序

    我正在使用 xcode 7 GM 种子并通过 cocoapods 安装了最新的 Google Signin SDKpod Google SignIn 当我尝试将我的应用程序发布到苹果应用程序商店时 我收到附加错误 Help 以下是 Goog
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • PresentModalViewController 不执行任何操作

    我有一个 UIViewController parent 调用presentModalViewController与另一个 UIViewController child on viewDidLoad If parent没有 UINaviga
  • 如何使用 Swift 获取 YouTube 频道的所有播放列表?

    我的问题不是关于从一般频道检索视频 我只想获取该频道创建的所有 播放列表 并检索每个播放列表的缩略图 标题和视频数量 这是一个 YouTube 频道示例 正如您所看到的 有很多已创建的播放列表 截至目前 我只能获取某个频道最新上传的视频 在
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 使用 UIImageJPEGRepresentation 时,compressionQuality 应该是多少?

    我想对用户库中的照片应用滤镜 然后将其写回磁盘 我在用着UIImageJPEGRepresentation 该函数需要一个UIImage and a compressionQuality值介于 0 0 和 1 0 之间 因为我想保留原始质量
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 为什么这个 SKPhysicsJointPin 不能将这 2 个精灵保持在一起?

    我显然不太了解 SKPhysicsJoint 但是除了 Apple 文档之外 网上的信息还很少 下面的代码有什么问题 我认为应该保持头部和颈部永久连接 我的意图是它们就像两张带有大头针的纸 这样它们可以旋转一点 但不仅仅是完全分开 当我运行
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方

随机推荐

  • AlertDialog 中的 Flutter NumberPicker 无法正常工作

    当我使用 NumberPicker 选择新值时 它总是跳回之前的值 而不是当前选择的值 我在 AlertDialog 中使用 NumberPicker 并使用 pickValue 函数调用 NumberPicker void pickVal
  • 上传并播放音频文件JS

    我有一个 HTML 音频标签和一个 HTML 文件输入标签 如下所示 我希望用户使用 上传文件 按钮从计算机中选择一首歌曲 然后使用音频标签播放它
  • 安装错误:ftheader.h:没有这样的文件或目录

    当我尝试构建 matplotlib 1 3 1 时 出现以下 freetype 标头错误 可能是找不到 ftheader h 关于如何解决这个问题有什么想法吗 注意 我刚刚按照中提到的说明安装了 Freetype 2 5 0 1自由类型安装
  • 崩溃 CGDataProviderCreateWithCopyOfData:vm_copy 失败:状态 1

    我遇到崩溃并出现以下错误 CGDataProviderCreateWithCopyOfData vm copy 失败 状态 1 我有多个问题 您可以提供帮助 vm copy failed 中状态 1 代表什么 仅当我在数据复制的内部 for
  • 从 PHP 子类访问受保护的方法

    我可以使用至少两种基本方法来访问受保护的子类的类方法 parent myMethod this gt myMethod 如果我不需要在子类中重写它 在这种情况下我必须这样做 function myMethod parent myMethod
  • jQuery 中的remove() 和detach() 之间的区别[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ImageView 不保持最大高度和宽度

    我将图像加载到ImageView using setImageURI selectedImageUri 从用户的照片库中检索 我有图像视图限制大小 android maxHeight 150dp android minHeight 150d
  • 卸载 NuGet 包时出现问题

    我正在尝试卸载 NuGet 安装的一些软件包 根据文档描述here http docs nuget org docs start here managing nuget packages using the dialog 我应该看到一个卸载
  • Tesseract OCR Android tessdata 目录未找到

    我目前正在使用 OCR 开发 Android 应用程序 并且已经达到了调用 BaseAPI init 方法的程度 我不断收到错误消息 指出该目录必须包含 tessdata 作为子文件夹 我已检查文件目录是否包含其中包含训练数据文件的文件夹
  • Node.js 上的文本到音频文件

    我正在寻找一种优化的合法方法来从 NodeJS 上的文本创建音频文件 现在我看到了 5 个变体 1 向谷歌翻译文本到语音 API 的简单 hhtp 请求 这种变体不好 因为每个请求都需要生成令牌 例如 传统知识 729008 879154
  • Crystal 从文件中读取 x 字节

    我有这个代码 a File open dev urandom b a read 1024 a close puts b 我原本希望从 dev urandom device file 获取前 1024 个字节 但我得到了一个错误 指出 rea
  • 如何在 Angular2 Typescript 项目中全局导入 Javascript 库?

    我试图弄清楚如何在我的 Angular2 项目中正确导入外部库 正如您在阅读有关此问题的其他答案时所看到的 对此存在一些困惑 甚至 Angular2 文档也没有相关信息 此外 Google 上的任何搜索都会导致与 Angular2 的 al
  • Silverlight 和 COM 互操作

    从 silverlight 与 COM 控件交互有哪些选项 在我的特定项目中 我有一个旧版 ActiveX 身份验证控件 我想在我的 silverlight 应用程序中利用它 没有太多无聊的细节 该控件采用几个参数 提示用户输入凭据或令牌
  • 如何在 Android 布局上正确分配 4 个按钮

    我试图将 4 个图像按钮分布到 Android 布局的 4 个可能的屏幕角落 无论分辨率如何 我希望图像背景是静态的 即 50x50 倾斜 并且我还希望在背景中全屏显示 android gesture GestureOverlayView
  • 如何在 ggplot2::geom_step() 中将线居中,类似于 highcharter

    对于我的情节 我想要ggplot2 geom step 线对齐以我的点为中心 而不是向左对齐 In highcharter hc add series type line 有一个选项叫做step center 看我的jsfiddle htt
  • 如何使用Python在Windows中设置代理?

    如何获取当前 Windows 浏览器代理设置并将其设置为一个值 我知道我可以通过查看注册表来做到这一点Software Microsoft Windows CurrentVersion Internet Settings ProxyServ
  • 如何在动态情况下寻找最短路径

    几天前 有人问我 如果我们的环境中有一些代理 他们想要从源头到达目的地 我们如何才能找到所有代理的总最短路径 以便他们在执行过程中不会发生冲突走 问题的关键是所有智能体同时在环境中行走 可以通过无向加权图建模 并且我们不应该发生任何碰撞 我
  • 在 NSPredicate 中使用 NSDate

    是否有特定的方法来配置 NSPredicate 来比较日期 本质上我有一个 Photo 对象 它有一个 NSDate lastViewed 我想配置一个 NSPredicate 它将返回最近在指定时间段 通常是两天 之前查看过的所有照片对象
  • 当我尝试安装 @nuxtjs/firebase 时出现 NPM 错误

    我收到这个错误 我不理解 而且我真的不知道如何修复 我正在使用 Nuxt js 我想同时使用 firebase 但是当我尝试 firebase nuxtjs 时 org 并安装 nuxtjs firebase 我收到此错误 npm ERR
  • 如何修复“UIPopoverController 已弃用”警告?

    我正在使用这段代码 mediaLibraryPopover UIPopoverController alloc initWithContentViewController avc self mediaLibraryPopover prese