首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Swift 5中关闭第一个popver并显示第二个popver?

在Swift 5中关闭第一个popver并显示第二个popver的方法是通过使用popoverPresentationController来管理popover的显示和关闭。

首先,要关闭第一个popover,可以使用dismiss方法来关闭当前的popover。例如:

代码语言:txt
复制
yourFirstPopover.dismiss(animated: true)

接下来,要显示第二个popover,需要创建第二个popover视图控制器,并设置其popoverPresentationController的相关属性,然后使用present方法来显示第二个popover。例如:

代码语言:txt
复制
let yourSecondPopover = YourSecondPopoverViewController()
yourSecondPopover.modalPresentationStyle = .popover

// 设置第二个popover的位置和大小
yourSecondPopover.popoverPresentationController?.sourceView = yourSourceView
yourSecondPopover.popoverPresentationController?.sourceRect = yourSourceRect

// 设置第二个popover的箭头方向
yourSecondPopover.popoverPresentationController?.permittedArrowDirections = .any

// 设置第二个popover的代理
yourSecondPopover.popoverPresentationController?.delegate = self

// 显示第二个popover
present(yourSecondPopover, animated: true)

注意,你需要替换"YourSecondPopoverViewController"为你自己的第二个popover的视图控制器类名。此外,你还需要设置第二个popover的位置和大小,箭头方向等属性。

同时,你也可以通过实现popoverPresentationController的代理方法来对第二个popover进行一些自定义设置。例如:

代码语言:txt
复制
extension YourViewController: UIPopoverPresentationControllerDelegate {
    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        // 返回.none来保持popover的显示
        return .none
    }
    
    func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
        // 返回true来允许点击popover外部区域来关闭popover
        return true
    }
}

这样,在Swift 5中你就可以关闭第一个popover并显示第二个popover了。

关于Swift 5中的popover功能,腾讯云没有特定的产品或文档提供相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

汇编寄存器的规则

# 汇编寄存器的规则 在本章中,您将了解到 CPU 使用的寄存器,研究和修改传入函数的参数。您还将了解常见的苹果计算机架构,以及如何在函数中使用它们的寄存器。这就是所谓的架构调用约定。...第一个是 英特尔程序集 ,第二个是 AT&T程序集 。默认情况下,Apple 的反汇编程序工具都会以 AT&T 格式显示,就如上例所示。 尽管这是一种很好的格式,但在眼睛上可能会有些困难。...还记得RDI是第一个参数,而RSI是第二个参数吗?在LLDB中,可以通过arg{X}形式来引用寄存器,其中X是参数号。还记得RDI是第一个参数,而RSI是第二个参数吗?...还记得RDI是第一个参数,而RSI是第二个参数吗?在LLDB中,可以通过 arg1 引用第一个参数 (RDI)。随着示例的进行,您可以使用 $arg2 引用第二个参数 (RSI),以此类推。...在 Swift 中,RDI 是第一个参数,RSI 是第二个参数,依此类推,前提是 Swift 方法未使用动态分配。

2.5K50
  • AVKit框架详细解析(二) —— 基于视频播放器的画中画实现(一)

    接下来您将解决这些问题中的第一个。...但是,如果您构建运行尝试此操作,您将看到画中画窗口立即关闭。 这是因为您的自定义播放器对象被释放,这是唯一保留画中画控制器的东西,因此也被释放。...现在,构建运行。 播放视频并进入画中画模式。 现在启动画中画会关闭自定义播放器控制器,关闭画中画窗口。 但是,如果您点按按钮以从画中画返回标准全屏播放,继续播放相同的视频,则没有任何反应。...4) 如果没有展示控制器,只需再次呈现原始控制器调用completion block。 构建运行。 上面的 GIF显示了两个代码路径: 1) 进入画中画然后恢复继续全屏显示画中画视频。...2)进入画中画,开始第二个视频,然后恢复画中画会用画中画内容替换全屏视频。

    2.8K10

    Flutter 接入 Apple 账号登录教程

    引言 2019 年底,苹果发布了 iOS 13,增加了一个新要求:任何使用第三方登录方法的应用( Facebook、Google、Twitter 等)在提交到 App Store 时必须也支持 Sign...本文将详细介绍如何在 Flutter 中实现这一功能,包括项目配置、iOS 部分的实现,以及 Flutter 代码的编写。...语言,打开 AppDelegate.swift 文件,并在文件顶部导入 AuthenticationServices 库: import AuthenticationServices 接下来,添加以下类以实现按钮的显示...,实现两个接口: ASAuthorizationControllerPresentationContextProviding ASAuthorizationControllerDelegate 首先是第一个扩展...controller: ASAuthorizationController) -> ASPresentationAnchor { return window } } 接下来是第二个扩展

    8410

    swift 基础语法(常量、变量、数值、布尔型、元组)

    常量和变量 声明常量和变量 常量和变量必须在使用之前声明 使用let关键字声明常量 使用var关键字声明变量 let a = 10 //声明一个名字是 a 的新常量,赋值为10 var b =...您可以通过启动多行注释块然后在第一个块中开始第二个多行注释来编写嵌套注释。...然后关闭第二个块,然后是第一个块 /* 这是第一个多行注释的开头 /* 这是第二个被嵌套的多行注释 */ 这是第一个多行注释的结尾 */ 分号 Swift并不强制要求你在每条语句的结尾处使用分号(;)...整型 整数是整数,没有小数部分,42、-23 整数有符号(正,零或负)Int32 无符号(正或零)UInt8 整数范围 let minValue = UInt8.min // minValue...这可以让你在开发的时候尽早发现修复错误 let meaningOfLife = 42 //推测为 Int 类型 let pi = 3.14159 // 当推断浮点数的类型时,Swift 总是会选择 Double

    16310

    Swift基础 基本运算符

    算术运算符(+、-、*、/、%等)检测禁止值溢出,以避免在处理大于或小于存储它们的类型允许值范围的数字时出现意外结果。您可以选择使用Swift的溢出运算符来评估溢出行为,溢出运算符中所述。...高级运算符涵盖了Swift的高级运算符,描述了如何定义自己的自定义运算符,实现您自己的自定义类型的标准运算符。 术语 运算符是一元、二进制或三元: 一元运算符对单个目标(-a)进行操作。...zebra"不亚于"apple"并不重要,因为比较已经由元组的第一个元素决定了。然而,当元组的第一个元素相同时,它们的第二个元素会进行比较——这就是第二行和第三行发生的事情。...事实上,如果第一个值是false的,第二个值甚至不会被计算,因为它不可能使整个表达式等同于true。这被称为短路评估。...在下面的示例中,第一个Bool值(hasDoorKey)为false,但第二个值(knowsOverridePassword)为true。

    8200

    如何使用 Swift 开发 iOS PDF 查看器或编辑器

    对于早期版本的 Xcode( Xcode 13),Bitcode 选项可能被设置成默认打开,这需要关闭它才能运行。...在 Swift 中开发 iOS PDF 查看器或编辑器在此部分,我们分步说明了如何在 Swift 中开发 iOS 应用程序。...否则,请查看本文末尾的“故障排除”部分或查看控制台中的错误日志,以快速识别解决问题。编译运行该项目。第 5 步:显示 PDF 文档准备一个测试PDF文件,将其拖放到新创建的pdfView项目中。...通过URL创建一个CPDFDocument对象,创建一个CPDFView来显示它。...打开PDF 文件显示。如果无法显示PDF内容,请检查创建的NSURL和对象是否为空,或者创建的CPDFView的大小是否为零。它们不应该是空的。

    11300

    SpriteKit简介-创建您的第一个iPhone平台游戏

    你创造了你的第一个游戏。 运行模拟器 让我们运行模拟器以确保我们的项目正常运行。点击在屏幕或按下左上角的播放按钮cmd+ R。...为了在我们的Xcode中没有太多面板的情况下创建一个更干净的UI,项目让我们关闭导航器面板,点击Xcode UI右上角的第三个按钮,从右到左依次计算。...首先,让我们选择player / 0让我们将物理定义属性中的Body Type从None更改为Alpha Mask取消选中Allow Rotation。...Z位置 让我们打开我们的项目导航器,然后选择GameViewController.swift。...您可能已经注意到,您已经学到了很多东西,比如如何在Xcode中创建第一个项目,导入资源,设置场景,将一些物理属性应用于节点以及了解Z位置。

    3.5K30

    你用 iPhone 打王者农药,有人却用它来训练神经网络...

    机器学习要想在移动端上应用一般分为如下两个阶段,第一个阶段是训练模型,第二个阶段是部署模型。...这篇文章主要着眼于如何在 iOS 设备上直接为 MNIST 数据集构建和训练一个 LeNet CNN 模型。...接下来,研究者将把它与基于著名的 ML 框架( TensorFlow)的经典「Python」实现方法进行比较。...在 Swift 中为 Core ML 的训练准备数据 在讨论如何在 Core ML 中创建及训练 LeNet CNN 网络之前,我们可以先看一下如何准备 MNIST 训练数据,以将其正确地 batch...同时,也包含了基本的训练信息、超参数等,损失函数、优化器、学习率、epoch 数、batch size 等等。 ? 使用 Adam 优化器训练神经网络,具体参数如下: ?

    2.6K20

    苹果 AI 部分性能超过 GPT4 | Swift 周报 issue 59

    为保证兼容性,Swift 基金会采用了一些策略,兼容性检查和在 Objective-C 客户端中保留/自动释放结果。Swift 的严格类型检查有助于解决一些常见的兼容性问题,误用可变性和空值。...使用 -warnings-as-errors 选项时,无法编译原本有效的 Swift 5 代码。疑问:如果 Swift 5 模式下有效的代码现在产生警告,那么 Swift 5 模式的意义何在?...可能的解决方案:关闭 warnings-as-errors 选项。使用警告限制(本地或 CI),允许逐步修复 Swift 6 相关警告,同时防止添加新警告。...讨论要点:开发者如何在自己的代码库中处理这些警告?是否应该提供一种方法来禁用这些警告,特别是在 Swift 5 模式下?...此外,文章还展示了如何在 Swift 中使用同态加密软件包的基本示例代码,包括参数选择、加密、解密和数据操作过程。。

    14600

    Swift 周报 第四十一期

    如果你不知道要专门去 GitHub 具体搜索苹果的 “Swift” 存储库,然后调整语言设置以使其实际显示这些模板文件,你永远找不到它们。搜索引擎非常努力地不显示 GitHub 源代码的结果。...这有点类似于我们如何在结果构建器中创建本地常量,这些常量不会立即被它消耗。 这个想法将扩展 if、guard 和 while 的条件列表。...文章通过实例演示了 ContentUnavailableView 的基本用法以及如何在其中定义描述文本和操作按钮。...总的来说,我们学会了如何利用 ContentUnavailableView 以用户友好的方式显示空状态。...闭包提供了两个参数:第一个参数是附加到视图的效果集合的初始状态,是 EmptyVisualEffect 类型的实例;第二个参数是 GeometryProxy 类型的实例,包含可能需要的视图所有布局信息,

    22940

    iPhone 16 或将配备可拆卸电池 | Swift 周报 issue 57

    引用类型(类)总是使用堆分配。写时复制(COW)值类型(Array)也使用堆分配。问题:Swift没有提供方法来知道值类型是否隐藏了私有引用类型。难以确定大型结构体的堆分配和引用计数情况。...内容大概问题概述:作者遇到了一个编译器相关的问题,涉及如何在 Swift 中安全地在 actor 和非隔离对象之间传递数据。...当前解决方案:作者目前的解决方法是为整个包含 OtherObjCObject 的库关闭并发检查,但这并不理想,因为该库还包含其他内容。...作者讲解了如何下载和安装 Swift 6 工具链,使用工具 Swiftenv 或 Swiftly 管理不同版本的 Swift。...此外,还介绍了不同的 List 样式选项, plain 、grouped 等,展示了如何使用 Section 进行分组显示,以及自定义 Header 和Footer 。

    11500

    架构之路 (五) —— VIPER架构模式(一)

    在命令式UI范例中——换句话说,在UIKit中——路由router将负责显示视图控制器或激活segue。 SwiftUI将所有目标视图声明为当前视图的一部分,根据视图状态显示它们。...构建运行,现在,您可以编辑trip标题。 编辑旅行名称后保存,重新启动应用程序后将显示更改。 4....第一个只是interactor的路点列表的一个副本。第二个使用mapInfoProvider来计算所有路径点的总距离。第三种方法使用相同的数据provider来获得路点之间的方向。...$waypoints .assign(to: \.waypoints, on: self) .store(in: &cancellables) 第一个订阅获取与interactor的原始距离,并将其格式化以便在视图中显示...,第二个复制路点。

    17.5K10

    聚焦位置-选择您喜欢的位置放置虚拟物体

    让我们为焦点方块添加一个新的Swift文件。右键单击视图控制器+ ARSCNViewDelegate选择新建文件...。然后,选择Swift File,单击Next。...命中测试结果 命中测试返回结果列表,我们只想要这些结果的第一个元素。第一个元素是离相机最近的平面。例如,如果您将相机对准您的桌子,则您希望桌子不是地板。...简而言之,这些结果包含有关变换的信息,方向,位置和比例。 guard let worldTransform = hitTestResult?....DispatchQueue.main.async {self.updateFocusSquare()} 再次运行应用程序注意控制台。 打开和关闭 我们如何为焦点方块添加漂亮的触感?...结论 在本课程中,您已经学习了很多很棒的东西,从创建自己的类开始自定义它。你能够将焦点方块从非活动变形到整个房间循环,并在打开和关闭状态之间切换。焦点方块广泛用于要检测表面的AR应用程序中。

    2.4K30

    Swift基础 控制流程

    index的值设置为范围(1)中的第一个数字,执行循环中的语句。在这种情况下,循环只包含一个语句,该语句从五次表中打印index当前值的条目。...您可能希望在发生错误时运行额外的代码,或者在值变得太高或太低时显示消息。为此,您可以将部分代码附加条件。 Swift提供了两种向代码添加条件分支的方法:if语句和switch语句。...a的第一个字母匹配,其第二个大小写与最后一个字母z匹配。...与C不同,Swift允许多个switch考虑相同的值。事实上,点(0,0)可以匹配本示例中的所有四个情况。但是,如果可以进行多次匹配,则始终使用第一个匹配案例。...fallthrough 在 Swift 中,switch语句不会从每个案例的底部掉到下一个案例中。也就是说,整个switch语句在第一个匹配案例完成后立即完成执行。

    10800
    领券