获取 UINavigationController 向后滑动的进度

2023-12-08

我有两个viewControllers,两者都是UINavigationController. From View1我可以点击UITableViewCell并前往View2, from View2我可以滑动返回View1.

我想知道如何才能获得此过渡的进展,但我在以下方面没有成功:

override func viewDidAppear(_ animated: Bool) {
    navigationController?.interactivePopGestureRecognizer?.addTarget(self, action: #selector(going))
}
@objc func going(){
        print(self.transitionCoordinator?.percentComplete)
}

That going函数在转换过程中被多次调用,但 print 语句只打印nil。我尝试使用其他视图控制器(视图和父导航控制器)但无济于事。

提前致谢


这似乎是有效的:

    private var currentTransitionCoordinator: UIViewControllerTransitionCoordinator?

    @objc private func onGesture(sender: UIGestureRecognizer) {
        switch sender.state {
        case .began, .changed:
            if let ct = navigationController?.transitionCoordinator {
                currentTransitionCoordinator = ct
            }
        case .cancelled, .ended:
            currentTransitionCoordinator = nil
        case .possible, .failed:
            break
        }

        if let currentTransitionCoordinator = currentTransitionCoordinator {
            print(currentTransitionCoordinator.percentComplete)
        }

    }

放手之后就没有办法取得进步了。我尝试将协调器保留更长的时间并在计时器上打印值,但我什至崩溃了。

无论如何,我认为这就是您所需要的。

测试场景:

创建一个新项目并导航到主故事板。添加导航控制器并将其根视图控制器设置为ViewController在故事板中(删除自动生成的根)。

然后转到 ViewController.swift 并用以下内容覆盖它:

import UIKit

class ViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        if let controller = navigationController, controller.viewControllers.count <= 1 { // Present it first time only
            view.backgroundColor = UIColor.green
            let newController = ViewController()
            newController.view.backgroundColor = UIColor.red
            navigationController?.interactivePopGestureRecognizer?.addTarget(newController, action: #selector(onGesture))
            navigationController?.pushViewController(newController, animated: true)
        }
    }

    private var currentTransitionCoordinator: UIViewControllerTransitionCoordinator?

    @objc private func onGesture(sender: UIGestureRecognizer) {
        switch sender.state {
        case .began, .changed:
            if let ct = navigationController?.transitionCoordinator {
                currentTransitionCoordinator = ct
            }
        case .cancelled, .ended:
            currentTransitionCoordinator = nil
        case .possible, .failed:
            break
        }

        if let currentTransitionCoordinator = currentTransitionCoordinator {
            print(currentTransitionCoordinator.percentComplete)
        }

    }

}

当您拖动手指时,您应该能够看到打印出来的百分比,从而消除当前推送的视图控制器。

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

获取 UINavigationController 向后滑动的进度 的相关文章

  • 如何在 swift 3 中发布原始数据?

    如果我使用 Postman 发布原始数据 就会收到响应 我正在使用这个代码 var dict Dictionary
  • 尝试在 Xcode 中为 OS X 应用程序设置 Tab 键顺序

    我正在使用 Xcode 7 3 构建 OS X 桌面应用程序 并尝试为其中一个表单设置 Tab 键顺序 我发现有几篇文章解释了 Xcode 4 的类似问题 但没有任何进展 https www youtube com watch v SRrE
  • 在 Alamofire 中快速发送 GET 请求中的 json 对象

    我正在尝试执行一个绑定了 json 对象的 GET 请求 这就是我生成 JSON 对象的方式 let jsonObject String AnyObject ean code type match value 16743799 然后我执行了
  • iOS 显示 UIImage 全屏并启用缩放(捏合和双击)

    我有一个UIImage从相机捕获UIImagePickerController 现在 在用户单击它之后 我希望它显示全屏 并且能够使用捏合手势进行放大和缩小 还可以使用双击手势来放大特定区域 换句话说 我想模拟ios默认图像浏览器的功能 我
  • 如何避免父ScrollView裁剪内部ScrollView?

    When a horizontal child ScrollView is nested inside a vertical parent ScrollView internal element is clipped by parent S
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • 即席分发失败

    我在一家大公司工作 正在开发一个适用于 iOS 5 的 iOS 应用程序 分发应用程序的唯一方式是通过临时部署 我拥有自己的服务器已经有一段时间了 由 o2switch 法国托管商 托管 当我开始开发时 我们使用它来部署应用程序以进行 Be
  • 让约束在尺寸类别中发挥作用

    所以 我正在 Xcode 6 beta 中尝试尺寸类 我对图像设置了一些限制 使其根据 iPhone 纵向和横向对应的尺寸类别处于不同的位置 这些限制在下图中可见 正如您所看到的 当我处于紧凑 紧凑状态时 一些约束被 安装 而其他约束则没有
  • 在 swift 中获取用户可读的类名版本(在 objc NSStringFromClass 中就可以了)

    Swift 中是否有相当于 NSStringFromClass 的类名 可以提供用户可读的版本 我尝试将它与我创建的本机 Swift 类一起使用 但如您所见 结果似乎是编译器对类名的内部表示 println NSStringFromClas
  • 如何使用 HTTP 标头发送非英语 unicode 字符串?

    我是 HTTP 相关问题的新手 我的问题是在 iOS 开发中 我想使用 HTTP 标头发送一个字符串 所以我使用 httpRequest setValue nonEnglishString forHTTPHeaderField custom
  • 取消交互式 UINavigationController 弹出手势不会调用 UINavigationControllerDelegate 方法

    如果拖动 a 的边缘UIViewController开始交互式流行过渡UINavigationController the UIViewController在电流下方有viewWillAppear 调用 然后是UINavigationCon
  • 未安装的应用程序的URL方案

    简单的问题 我正在开发一个将注册自己的 URL 方案的应用程序 我计划通过人们最喜欢的 QRCode 阅读器使用 QRCode 启动该应用程序 我的问题 如果我的应用程序尚未安装在他们的 iPhone iPad 上 会发生什么 他们会被引导
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • 配置 2 在按钮 swiftUI 中发出警报消息

    我要学习 swift 和 swiftUI 我申请按类别整理笔记 如果需要的话 你可以在我的 GitHub 中找到我的项目 https github com yoan8306 List Notes https github com yoan8
  • AVAudioMixerNode pan 或 AVAudioUnitSamplerstereoPan 属性无法更改 AVAudioEngine 声音输出的左/右平衡

    我有以下代码 它播放单个 MIDI 音符 但我希望能够调整平衡 平移 以便它仅从左扬声器或右扬声器或某些组合中播放 我认为更改 sampler stereoPan 或 engine mainMixerNode pan 也许可以解决问题 但它
  • 在应用程序内启用或禁用 Iphone 推送通知

    我有一个 iPhone 应用程序 可以接收推送通知 目前 我可以通过转到 iPhone 设置 通知来禁用我的应用程序的推送通知 但我想在我的应用程序中添加一个开关或按钮来启用或禁用推送通知 这是可以做到的 因为我在 foursquare i
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP

随机推荐

  • PHP:可视化您的应用程序工作流程和功能与功能的关系

    我正在寻找一款可以帮助我可视化应用程序工作流程以及功能与功能关系的软件 我正在使用 codeigniter 而且我的应用程序每天都在变得越来越大 而且是我独自工作 我开始得精神分裂症了 今天我正在构建数据库模型 明天可能是查看js html
  • 如何从 Perl 发出 HTTP GET 请求?

    我正在尝试编写我的第一个 Perl 程序 如果您认为 Perl 对于手头的任务来说是一种糟糕的语言 请告诉我哪种语言可以更好地解决它 该程序测试给定机器和远程 Apache 服务器之间的连接 首先 程序从 Apache 服务器请求目录列表
  • $lookup的Foreign字段可以是嵌套文档的字段吗?

    lookup用于对同一数据库中的未分片集合执行左外连接 以从 连接 集合中过滤文档 以便在 Mongo 中进行处理 lookup from
  • 替换文件中间的文本

    I have txt文件 有几行 username1 123456789 etc etc etc etc username2 1234 etc etc etc etc username3 123456 etc etc etc etc use
  • Node js - 加密和解密文件

    我想在客户端加密文件并将其发送到服务器端 解密 但是当我使用内置的 Node js 时crypto我收到错误 客户端 js const crypto require crypto const cipher crypto createCiph
  • 为什么 read() 不能在 open() 函数中使用 'w+' 或 'r+' 模式

    当我使用带有 r 或 w 参数的打开时 它不想读取文本文件 内部文本文档 hello Python 代码示例 code with open file name r as o print o read output hello code wi
  • 安装时npm权限错误

    我正在尝试在我的服务器上安装 yeoman 但由于某种原因 我总是收到权限被拒绝的错误 npm install g yo root node bin yo gt root node lib node modules yo cli js gt
  • 上传多个文件并查询 Firestore DB - ReactJS

    我读了很多这样的帖子如何将多个文件上传到 Firebase 之前关于这个问题 我尝试了不同的选择 但无法得到结果 我正在使用 React Hook Form 来创建一个非常巨大的表单 现在我必须添加更多输入 以上传文件 并且需要帮助立即完成
  • 在 C# 中创建 CSV 文件

    我正在尝试创建一个 csv 文件 其中每个条目均由用户输入 输入一组值后 应继续输入下一组值 然而我似乎无法做到这一点 每次我运行该程序时 它都会替换以前的值 using System using System IO using Syste
  • 如何将 3D Python/NumPy 数组保存为文本文件?

    我必须启动大量计算 并且每次都必须保存 2D 文件文本 因此我想将结果 实时 存储为 3D 文本文件 每个切片对应一个计算结果 第一次计算没问题 但是当我进行第二次计算时 在 np loadtxt 步骤中 数组维度变成了二维 所以我无法达到
  • 带有文本文件的实体框架(没有数据库!)

    我习惯了表单和数据集 但现在我正在尝试 WPF 和实体框架 我的目标是使用实体框架填充 WPF 中的 DataGrid 但是 我没有数据库 我有简单的文本文件 其中包含我必须解析以填充我的实体的数据 但是 我收到诸如 实体类型 TableN
  • 比较 Chrome 和 Firefox 的字体大小问题

    我建立了一个网站 问题是 chrome 显示font size 1px比火狐浏览器还大 我尝试了几种方法来匹配字体大小 以 px 为单位指定 以 为单位将正文设置为 100 然后将元素设置为0 875em 这些都不起作用 它仍然在 Chro
  • “应用程序窗口预计有一个根视图控制器”条件外观

    我正在使用 Xcode 4 5 和 iOS6 为 iPhone 编写一个应用程序 我也在创建一个新的UIWindow能够管理状态栏的区域 在那里显示消息等 我正在使用故事板和我的appDelegate方法如下所示 BOOL applicat
  • 在 PHP 中通过电子邮件验证用户

    我实际上正在使用 PHP 创建一个 Web 应用程序并寻求验证用户的帮助 与某些网站一样 当您注册时 系统会向您发送一封包含确认链接的电子邮件 我如何在 PHP 中实现它 我只知道我必须使用 PHPmail 功能发送电子邮件 请帮忙 必要的
  • 将字符串中单词的每个实例加粗

    我试图将字符串中单词的每个实例加粗 并删除字符串中第一个单词实例之前的所有内容 我在用着str replace and stristr 这样做 但输出不符合预期 该单词的第一个实例之前的所有内容都被切断 但当我回显该字符串时 该单词的实例不
  • 任务之外的异常处理

    刚刚注意到奇怪的事情 要从新任务捕获调用者中的异常 lambda 必须标记为异步 即使 delegate 根本没有await 运算符 这真的有必要吗 try Task Run gt exception is not caught Task
  • 检查查询字符串 (PHP)

    例如 我使用查询字符串test php var 1 我如何检查用户之后是否输入任何内容 例如另一个字符串 如果我的后面有任何其他字符串 查询字符串 我尝试重定向到index phpvar请求参数 可以检查这个吗 例如 test php va
  • HTML5 / CSS3 带有部分边框的圆形

    是否可以仅使用 HTML5 CSS3 创建一个圆形 其边框仅围绕圆形一部分 如果没有 我可以使用什么技术来实现这种效果 我更喜欢使用纯 DOM 元素 但如果必须的话 我可以在画布上绘图或旋转 SVG 2023年解决方案 这个方法不需要 JS
  • 如何在 C# 中测试 COM 相关对象

    我正在尝试使用依赖于 COM 接口的对象进行 TDD 我考虑在进行开发测试时模拟 COM 接口 并在集成测试中真正做到这一点 但是 我无法模拟 COM 接口 我尝试使用 Moq 它引发了异常 System TypeLoadException
  • 获取 UINavigationController 向后滑动的进度

    我有两个viewControllers 两者都是UINavigationController From View1我可以点击UITableViewCell并前往View2 from View2我可以滑动返回View1 我想知道如何才能获得此