swift 重新加载集合视图后单元格的UIMenu错误

k7fdbhmy  于 2023-09-29  发布在  Swift
关注(0)|答案(1)|浏览(134)

我遇到了与单元格的UIButton连接的UIMenu问题。因此,在集合视图中,按钮上的UIMenu(按钮是单元格的一部分),如果在显示UIMenu时,有一个collectionView.reloadData(),则UIMenu会改变位置并被转移到另一个单元格,使用新的单元格数据进行操作。因此,在reloadData()之后,UIMenu似乎正在使用不是最初选择的单元格的单元格/数据。
下面是我使用的代码:https://pastebin.com/wuNsPki5
如何测试我遇到的问题:
1.运行app
1.点击任何单元格
1.等待10秒
1.点击共享操作
1.输出显示它共享了另一个值,而不是预期的值

UIAction(title: "Share") { [weak self] _ in
    guard let self else { return }
    print("Share \(self.value)")
}

因此,如果我点击第二个单元格(值== 1),等待10秒(触发collectionView.reloadData),然后点击共享操作,我希望它会打印“共享1”,但实际上它会打印“共享3”。

ukxgm1gy

ukxgm1gy1#

两个不同的想法:
1.在菜单打开时不要reloadData()。我是说,可以说,这是从菜单和它所连接的按钮下面拔出地毯。
1.当用户点击UICollectionView单元格中的按钮时,让它触发一个不可见的按钮的UIMenu,该按钮位于集合视图之外,位于集合视图之上。然后,集合视图可以在菜单打开时重新加载它想要的所有数据。现在,如果添加或删除单元格,UIMenu的尾部可能不再位于正确的位置,但您不希望在显示UIMenu时移动它,因为这会给用户带来麻烦。
我从来没有尝试过这两种方法,但这是我在这种情况下探索的。

相关问题