NSCollectionView 单元格顺序随视图更改而更改

2024-04-30

我有一个包含选项卡栏设计的 macOS 应用程序(即:Tweetbot)。有 4 个选项卡链接到 4 个不同的视图控制器。初始视图控制器(视图一)包含一个NSCollectionView水平显示 3 个单元格。

这一切都工作正常,但是当我切换到另一个视图控制器然后返回到初始视图控制器时,集合视图的顺序无缘无故地改变。我没有对数据源进行任何更改(这是一个NSMutableArray)并且我没有添加/删除任何单元格,也没有打电话reloadData。我不明白为什么集合视图单元格的顺序不断变化。

我已经做了一些测试,可以确认我的数据源中的数据顺序根本没有改变。因此,对于集合视图来说,仅更改单元格的顺序是没有意义的。

我注意到的另一个奇怪的问题是,如果我将集合视图限制为 2 个单元格,则不会出现此问题。这让我想知道这个问题是否归因于某种NSCollectionView在后台运行的缓存方法?也许当集合视图回收单元格时,它使用了不正确的数据?

我尝试了很多不同的解决方案,但似乎没有任何效果。有谁知道我可以测试/尝试什么,以找出问题所在?

另类想法

我可以用NSTableView相反,因为它支持多列(与UITableView)。所以我可以做一个NSTableView有 3 列。这种方法的性能会比NSCollectionView(特别是如果我想添加大量单元格?)。


我无法找出集合视图出了什么问题。所以我最终使用了NSTableView具有多列(而不是集合视图行)。我将每一列设置为一行(索引 0),这使得表视图看起来与我正在使用的集合视图完全相同。

从性能角度来看,表视图似乎也好得多。即使有数百列,滚动/交互时仍然非常流畅。

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

NSCollectionView 单元格顺序随视图更改而更改 的相关文章

随机推荐

  • 使用 HTML / CSS / JavaScript 隐藏 YouTube 视频控件(标题、稍后观看、分享)

    我正在我的网站中嵌入 Youtube 每日动态视频 我不希望 Youtube 视频控件在我的网站上可见 请查看附件 我想删除顶部的控件 以红色突出显示 并且还想删除底部的控件 以红色突出显示 以前可以在 YouTube 视频中使用 show
  • 如何将 SVG 元素下载为 SVG 文件

    在过去的几个月里 我一直在编写处理椭球地球的代码 最近我已经完成了它 我的教授现在希望我将我制作的图表的图片作为 SVG 文件发送给他 我知道在Python中你可以在你的项目中放入几行代码来让它下载图像 但我不确定它是如何工作的JavaSc
  • Rails 3.2.2 mysql2 适配器错误

    我在让 mysql2 适配器与最新版本的 Rails 一起工作时遇到了麻烦 我刚刚生成了一个新项目 将以下内容添加到我的 gemfile 中 gem mysql2 lt 0 3 7 然后当然跑了 bundle install 我还修改了我的
  • 如何防止 iOS 独立 Web 应用程序锁定设备?

    我的原型设计服务创建独立的 不可安装的 iOS Web 应用程序 有时他们会在使用时锁定设备 主页按钮停止工作 应用程序继续工作 以下内容在设备的控制台中重复显示 通过附加到 xcode 检索 Apr 25 14 34 57 SpringB
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • C 可变参数函数:如何指定给 va_arg 的类型

    在像 printf 这样的函数中 我们使用stdarg h处理可变参数 void print int args va list ap va start ap args int i 0 for i 0 i
  • 使用 php 使用 Google Drive 进行断点续传

    我正在尝试使用以下文档在 php 中使用 Google Drive 进行可恢复上传 https developers google com drive v3 web manage uploads resumable https develo
  • Cordova 错误:您的 ios 平台没有 Api.js

    我正在尝试构建一个 cordova ios 应用程序 但运气不佳并且出现奇怪的错误 将此版本的 Cordova 与旧版本的 cordova ios 一起使用是 已弃用 升级到 电子邮件受保护 cdn cgi l email protecti
  • Puppet - 在迭代哈希时,如果 hiera 中不存在,则在清单中设置默认值

    我正在迭代 hiera 哈希中的许多条目 并希望通过在清单中设置默认值 例如ensure groups managehome等 并且如果 hiera 中存在重复的键 值对 则覆盖默认值 到目前为止 我尝试过的所有方法都无法获得默认值 我知道
  • c:forEach 在单个表行中显示所有内容

    目前我正在做一个项目 我需要在数据库的列中显示信息 但由于某种原因它们显示在一行中 现在显示如下 我还附上了我的 jsp 页面中的代码 table border 1 cellspacing 0 cellpadding 3 style fon
  • 主线程检查器:在后台线程上调用 UI API iOS 11 Xcode 9 GM Seed

    任何人都可以帮助我调试这个问题 从我开始使用 Xcode 9 GM 种子和 iOS 11 GM 种子开始 我的代码在控制台中向我发出警告 2017 09 18 16 22 52 872716 0530 359 20158 reports M
  • Jenkins + Cmake + JIRA = 多个相互依赖项目的 CI?

    我们的系统中有许多小项目在 Linux 上运行 Slackware 7 11 正在慢慢迁移到 RHEL 6 0 大约 50 100 个应用程序和 15 20 个库 我们几乎所有的应用程序都使用我们的一个或多个库 我们的源树看起来像这样 ap
  • Vuex - “不要在突变处理程序之外改变 vuex 存储状态”

    我正在尝试从 Firestore 初始化我的 Vuex 商店 最后一行代码context commit SET ACTIVITIES acts 是什么造成了错误 我不认为我会直接改变状态 因为我正在使用一个动作 我可能会错过什么 这是我的
  • Sonatype Nexus 3 - 记录 URL 代理请求

    我正在尝试调试代理存储库的问题 为我知道被代理的存储库中存在的工件提供 404 在我的情况下这是一个 NPM 包 我想启用日志记录 以便可以看到 Nexus 在响应该代理请求时尝试访问的 URL 但似乎找不到任何提供此输出的默认记录器 我需
  • 在 JavaScript 中检查数组是否包含 null 以外的内容?

    我有一个数组 很可能总是这样 null null null null null 有时这个数组可能会变成这样 helloworld null null null null 我知道我可以使用 for 循环 但是有没有办法使用indexOf检查数
  • AddExtension 属性在 C# 2.0 中如何工作?

    我想打开一个保存文件对话框 让用户输入文件名 如果他们忘记了 csv 扩展名 请添加它 SaveFileDialog AddExtension 属性似乎可以工作 但事实并非如此 我什至将 DefaultExt 属性设置为 csv 但仍然没有
  • 使用正则表达式验证姓名

    我正在尝试编写一个正则表达式name and surname 它们由一个或多个只能由字母组成的单词组成 我不关心首字母大写字母 I 想匹配名字和姓氏 Names Antony de Home April antony de Home Apr
  • 为每一表行创建一个 json

    我想从表中的数据创建 json 表格看起来像这样 code D5ABX0 MKT536 WAEX44 我正在使用 FOR JSON PATH 这很好 SELECT code FROM feature FOR JSON PATH 但是这个查询
  • 安全灵活的跨域会话

    我有一个问题希望你能帮忙解决 假设我在一家名为 Blammo 的假设公司工作 我们有一个名为 Log 的假设产品 我正在尝试建立一个系统 人们可以登录 logfromblammo com 并订购我们的一些产品 然后当他们准备好购买时 前往
  • NSCollectionView 单元格顺序随视图更改而更改

    我有一个包含选项卡栏设计的 macOS 应用程序 即 Tweetbot 有 4 个选项卡链接到 4 个不同的视图控制器 初始视图控制器 视图一 包含一个NSCollectionView水平显示 3 个单元格 这一切都工作正常 但是当我切换到