来到 UITableView 底部后加载更多内容

2024-01-04

对于我的应用程序,我使用“在底部加载更多”属性,如下所示。实际上效果很好;唯一的问题是,当用户到达按钮时,虽然加载更多功能正在工作,但对于用户来说,应用程序似乎冻结了一段时间,因为没有像UIRefreshcontrol。如何使动画显示直到加载新数据。我找到了一些UIBottomrefreshcontrol属性作为单独的库,但它们都在 Objective-c 中。

override func viewDidLoad() {
    super.viewDidLoad()

   refreshResults()

 }

 func refreshResults() {


    refreshPage = 40

    // here the query starts
}


func refreshResults2() {

     // here the query starts to add new 40 rows of data to arrays

}


func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,     forRowAtIndexPath indexPath: NSIndexPath) {

    if indexPath.row == refreshPage-1 {
        refreshPage = refreshPage + 40

        refreshResults2()

    }
}

Add a UIActivityIndicatorView(即微调器)到您的 UITableViewController。将插座连接到代码:

@IBOutlet weak var spinner: UIActivityIndicatorView!

将属性添加到您的UITableViewController跟踪您当前正在加载更多数据,这样您就不会尝试执行两次:

var loadingData = false

启动旋转器动画,然后调用refreshResults2():

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    if !loadingData && indexPath.row == refreshPage - 1 {
        spinner.startAnimating()
        loadingData = true
        refreshResults2()
    }
}

Have refreshResults2()在后台线程上运行。这将使您的桌子仍然可以自由移动。动画旋转器将告诉用户更多数据即将到来。查询返回后,更新主线程上的表数据。

func refreshResults2() {
    dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
        // this runs on the background queue
        // here the query starts to add new 40 rows of data to arrays

        dispatch_async(dispatch_get_main_queue()) {
            // this runs on the main queue
            self.refreshPage += 40
            self.tableView.reloadData()
            self.spinner.stopAnimating()
            self.loadingData = false
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来到 UITableView 底部后加载更多内容 的相关文章

  • 为什么performSegueWithIdentifier在viewDidLoad中不起作用?

    我试图在视图控制器上调用 viewDidLoad 后立即触发故事板转场 Segue 附加了一个标识符 当从链接到按钮或其他控件的方法内部调用时 它可以正常工作 但它在 viewDidLoad 内部不起作用 它只是默默地失败了 viewDid
  • Swift 协议扩展实现另一个具有共享关联类型的协议

    考虑以下 protocol Foo typealias A func hello gt A protocol FooBar Foo func hi gt A extension FooBar func hello gt A return h
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • 如何使用 Vapor 和 Leaf 将图像从浏览器上传到 Amazon S3?

    我已经设置了 AWS S3 存储桶 并且可以使用 Vapor 3 和 Postman 上传文件 PUT request 和标头 x amz acl public read 但我想从浏览器中执行此操作 我使用的是 leaf 那么如何从浏览器上
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • 有关 Swift 编译器选项的文档

    您好 我想开始在 Apple Swift 语言上运行一些微基准测试 然而 我觉得很难找到有关编译器优化的不同选项的适当文档 我读过很多关于其他人的语言微基准的问题和文章 但是如果能有一些关于该主题的可靠文档那就太好了 在最新的测试版中 使用
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 如何在button.addTarget操作中发送多个按钮?斯威夫特3

    如何将button和button2发送到我的pressButton2函数中 当用户触摸按钮2时 我需要更改按钮和按钮2的颜色 当我的 button2 addTarget 看起来像这样时 我收到错误 表达式列表中存在预期表达式 import
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即
  • 使用 MapKit 的地形和卫星视图

    我是 Mapkit View 的新手 当我给出没有目的地的纬度和经度时 我想显示 MapKit中是否可以通过地形 卫星视图来显示地图 有教程链接吗 我看过一些访问 Google 地图 API html 文件 的示例 有必要吗 或者您可以通过
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • Firebase ref.removeAllObservers() 是否也会递归删除子观察者?

    我看到了一些与此相关的问题 但没有一个真正证实了我的疑问 If I removeAllObservers 在父节点上 这是否也会递归地删除可能已附加在所有子节点和子节点的子节点等处的所有其他观察者 递归地 API 文档为removeAllO
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • 使用子项目构建 Android Gradle

    我目前正在将我们的一个项目从 Maven 转换为 Gradle 文件夹结构如下 gitRoot settings gradle build gradle ProjectA build gradle src main java Librari
  • 没有这样的模块“Flutter”[重复]

    这个问题在这里已经有答案了 我已经在 TestFlight 中发布了我的应用程序 但它在启动时崩溃 当我查看崩溃日志时 它说 没有这样的模块 Flutter 我确实知道如何修复 Thanks in Advance 在终端中打开 IOS 文件
  • 通过指针传递二维数组

    如何将 m 矩阵传递给 foo 如果我不允许更改 foo 的代码或原型 void foo float pm int i j for i 0 i lt 4 i for j 0 j lt 4 j printf f n pm i j int ma
  • 如何在 R 中从 PDF 绘制 CDF 函数

    我有以下功能 fx lt function x if x gt 0 x lt 3 res lt 0 2 else if x gt 3 x lt 5 res lt 0 05 else if x gt 5 x lt 6 res lt 0 15
  • 星号 (*) 在 CSS 选择器中起什么作用?

    我找到了这段 CSS 代码 并运行它来查看它的作用 它概述了页面上的每个元素 谁能解释一下星号是什么 CSS 中有吗
  • 充气城堡:如何获取带有调试信息的 bcpkix-jdk15on-1.47.jar

    我正在尝试调试充气城堡 1 47 的问题 我可以找到 bcprov 的调试 jar 但找不到 org bouncycastle bcpkix jdk15on 1 47 jar 的调试 jar 还有其他地方可以下载带有调试信息的 bcpkix
  • 如何从本地 cocoapods 缓存中清除或清除特定 pod

    如何从 cocoapods 缓存中删除或清除特定的 pod 尝试直接删除整个缓存 需要很长时间才能恢复所有 Pod 如何从缓存中查看和删除特定的 Pod 以下作品 较长时间提交 delete all cached pods rm rf HO
  • 在 Xcode 4 中重定向 I/O

    我刚刚安装了 Xcode 4 我正在尝试将输入从文件重定向到我的 C 程序 我尝试在运行方案的 参数 部分中使用常用的 Thanks Samer 我使用各种类型的参数进行了测试 似乎 Xcode 在参数方面存在错误 上次测试 Xcode 8
  • 分支错误预测是否会刷新整个管道,即使对于非常短的 if 语句体也是如此?

    我读到的所有内容似乎都表明分支预测错误总是会导致整个管道被刷新 这意味着大量的周期被浪费 我从未听到任何人提到过短 if 条件的任何例外情况 在某些情况下这似乎真的很浪费 例如 假设您有一个单独的 if 语句 其主体非常简单 被编译为 1
  • C#。 NPOI 2.0 将 xlsx 日期单元格导入到 DataTable

    我尝试使用 NPOI 2 0 库将 xlsx 文件转换为 DataTable 格式 没关系 但我在转换为字符串日期单元格时遇到问题 当我尝试使用像 row GetCell j ToString 这样的构造时 它抛出异常 无法从文本单元格获取
  • Hadoop - java.net.ConnectException:连接被拒绝

    我想连接到 hdfs 在 localhost 中 但出现错误 从 despubuntu ThinkPad E420 127 0 1 1 到 localhost 54310 的调用失败 出现连接异常 java net ConnectExcep
  • Gradle 同步问题:所有消耗品配置都没有属性

    我不想在我的项目中使用外部库 事实是它的行为不符合我的要求 所以我需要编辑它的类 为此 我将库下载为 zip 文件夹 并使用此技术将其添加到我的项目中如何在 android studio 中编辑依赖项 外部库 https stackover
  • 使用 Mac OS X 加载 rgl 包时出错

    我正在尝试在 Mac OS X Lion 10 7 3 下安装 R 2 14 2 的 rgl 软件包 0 92 858 当我尝试加载它 库 rgl 时 出现以下错误 Error onLoad failed in loadNamespace
  • 如何在 UITableViewCell 中画一条线

    我需要在 UITableviewcell 中画一条线 有什么可能的方法来做到这一点吗 如果有人对在 UITableview 单元格中画一条线有任何想法 请回复我 Thanks 如果线条是水平或垂直的 您可以添加一个黑色的 UIView 像这
  • 根据移动或桌面 HTML 和 CSS 更改图像

    因此 我尝试根据用户使用的是移动版本还是桌面版本来更改图像 我有两个不同的图像 最后一个带有 m 的图像是用于桌面的迷你版本 另一个是用于移动设备的图像 但我无法让它工作 这是一些代码 HTML 使用 Razor 因此 C 代码可以工作 i
  • 无法打开包含文件:“vector.h”:没有这样的文件或目录

    在文件的顶部 我有 include vector h 然后我做一个 vector
  • 我应该使用哪个框架来编写模块? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 编写模块的最佳框架是什么 ExtUtils MakeMaker http search cpan org perldoc ExtUtils Ma
  • Android Talkback 一直显示 Webview

    我已经为 webview 设置了内容描述 并且我已经覆盖了dispatchPopulateAccessibilityEvent 但是当 webview 第一次加载时 回话一直说 webview 有没有办法把它关掉 Thanks None
  • 使用不引人注目的验证处理占位符

    我有一个带有输入字段占位符的表单 它使用 html5 占位符属性和 javascript 占位符后备 我使用不引人注目的验证 如下所示 DisplayName Required ErrorMessage Please enter a nam
  • 来到 UITableView 底部后加载更多内容

    对于我的应用程序 我使用 在底部加载更多 属性 如下所示 实际上效果很好 唯一的问题是 当用户到达按钮时 虽然加载更多功能正在工作 但对于用户来说 应用程序似乎冻结了一段时间 因为没有像UIRefreshcontrol 如何使动画显示直到加