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