来到 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 底部后加载更多内容 的相关文章

  • Draggable Boxview 不更新 Xamarin

    我的第一个问题是框视图生成在左上角 而不是我指定的设计网格第 10 行和网格第 3 列 第二个问题在于可拖动视图 在代码本地可拖动视图的第一部分中 它正确地调用了触摸事件 但也许它没有在GUI中更新
  • iOS 中系统日期更改后如何更改带有日期的标签?

    我有一个简单的查询 但不知道该怎么做 这就是我想要实现的目标 1 我有一个带有今天日期的 UILabel 即 29 04 12 2 在午夜 我希望该标签自行更新为 30 04 12 而无需更改视图或按任何内容 这是第2步 我不知道该怎么做
  • NSIndexpath.item 与 NSIndexpath.row

    有谁知道之间的区别NSIndexpath row and NSIndexpath item 具体来说 我在以下情况中使用哪一个 UITableViewCell tableView UITableView tableView cellForR
  • Swift 中的 @autoreleasepool 相当于什么?

    在 Swift 中 我注意到没有 autoreleasepool 构造 尽管 Swift 确实使用了 ARC 在 Swift 中管理自动释放池的正确方法是什么 或者它是否因某种原因被删除 语法如下 autoreleasepool code
  • 设置UITextField的光标位置

    我查看了单点触控示例并尝试过 var range new NSRange selectionStart 1 NumberTextField SelectedTextRange IndexedRange GetRange range 但这会在
  • iOS - 在 UITabBar 上方获取所需的阴影

    我试图让我的标签栏阴影看起来像这张图片中看到的那样 这样做的最佳方法是什么 我正在使用 Objective C Thanks 您可以使用以下代码为任何 UI 对象提供阴影 tabBar layer shadowOffset CGSize w
  • 致命错误:在 flutter 中找不到“Flutter/Flutter.h”文件

    这是错误 在文件中包含来自 Users chetan pub cache hosted pub dartlang org webview flutter 1 0 7 ios Classes JavaScriptChannelHandler
  • 如何在 iOS 上更改设备音量 - 而不是音乐音量

    我想更改 iOS iPhone 上的设备音量 我知道我可以使用以下几行更改音乐库的音量 implement at first MediaPlayer framework MPMusicPlayerController musicPlayer
  • 当表格为空时 iPhone UITableView 图像背景

    我想当我的 UITableView 为空时显示图像背景 目前 我尝试将 UIImageView 添加到包含表格的视图控制器 但 XCode 不允许这样做 有没有好的方法呢 您可以在表视图顶部添加图像视图或更改表视图的背景视图 Check i
  • 解析迁移到 mLabs 和 Heroku 的错误

    我至少一年前将解析数据库迁移到 Mlabs 从那时起我就一直在开发该应用程序 解析仪表板表示我已成功迁移 Mlab 和 Parse 都收到了数据库的更新 然而 在过去一两周内 该应用程序不再经过登录页面 没有调整代码 这是服务器问题 以下是
  • WKWebView在后台,几个奇怪的断言

    我想找出iOS中当前浏览器的userAgent 所以在 Xcode 创建的默认项目中我添加了 import ViewController h import
  • 如何使用呼叫目录扩展来识别应用程序中的来电?

    我正在研究callKit框架 我发现通过使用呼叫目录扩展 我们可以识别来电电话号码 我的问题是如何在 iOS 应用程序中实现呼叫目录扩展来识别来电详细信息 我在 Objective C 工作 让一个数 919876xxxxx 使用此方法添加
  • 在两个可移动 uiview 之间画线

    我有一个带有节点的 滚动视图 UIViews 可以拖动 我正在尝试在选定的之间绘制边缘UIViews使用 calayer 但我不知道当视图位置发生变化时如何重新绘制线条 In my viewControllerI 类在节点数组中添加第一个和
  • UINavigationBar 滑开而不是留在原处

    我创建了演示项目来展示问题 我们在 UINavigationController 中有两个视图控制器 MainViewController这是根 class MainViewController UIViewController lazy
  • 如何将 SCNPlane 颜色更改为透明颜色

    我正在开发一个 ARKit 项目 在水平面上点击时需要波纹动画效果 为此 我采用了 UIView 对象并将其作为 SCNPlane 对象材料的内容传递 我已将波纹动画添加到 UIView 对象 一切正常 但我无法将 SCNPlane 颜色更
  • 视频中的图像/文本叠加 swift

    我正在使用 swift 在视频中使用图像叠加来实现水印效果 我正在使用AVFoundation为此 但不知何故我没有成功 以下是我的覆盖图像 文本的代码 let path NSBundle mainBundle pathForResourc
  • 旋转 GPUImageTiltShiftFilter - GPUImage

    我想要一个非水平 GPUImageTiltShiftFilter 旋转 我想将其旋转到任意旋转角度 我还希望过滤器速度快 可以通过带有 UIRotationGestureRecongizer 的 UI 进行旋转 我该怎么做呢 啊 想通了 不
  • 应用程序仅启用纵向,但 UIImagePickerController 在 iOS6 中旋转

    请注意 下面的答案 不适用于 iOS6 所以我仍然需要答案 我的应用程序仅启用纵向模式 但是 如果我将 UIImagePickerController 作为子视图嵌入其中 并旋转设备 则顶部和底部栏将保持在同一位置 但 UIImagePic
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • GCD 与自定义队列

    我想知道这两者的性能有什么区别 dispatch async dispatch get global queue DISPATCH QUEUE PRIORITY HIGH 0 perform complex operation dispat

随机推荐

  • 使用子项目构建 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 如何使动画显示直到加