我在将
UIMenu
附加到单元格的 UIButton 时遇到问题。因此,集合视图中按钮上的 UIMenu
(按钮是单元格的一部分),如果在显示 UIMenu
时存在 collectionView.reloadData()
,则 UIMenu
会更改位置并使用新单元格转移到另一个单元格行动的数据。
因此,在 reloadData()
之后,UIMenu
似乎正在使用不是主要选择的单元格的单元格/数据。
这是我正在使用的代码:https://pastebin.com/wuNsPki5
如何测试我遇到的问题:
UIAction(title: "Share") { [weak self] _ in
guard let self else { return }
print("Share \(self.value)")
}
因此,如果我点击第二个单元格(值 == 1),等待 10 秒(触发
collectionView.reloadData
),然后点击“共享操作”,我希望它会打印“共享 1”,但实际上打印“共享 3” “例如。
两个不同的想法:
菜单打开时不要重新加载数据()。我的意思是,可以这么说,这就是从菜单及其所附按钮下方拉出地毯。
当用户点击 UICollectionView 单元格中的按钮时,让它触发一个不可见按钮的 UIMenu,该按钮位于集合视图之外的顶部。然后,当菜单打开时,集合视图可以根据需要重新加载其数据。现在,如果添加或删除单元格,UIMenu 的尾部可能不再位于正确的位置,但您不希望在显示 UIMenu 时移动 UIMenu,因为这会给用户带来麻烦。
我从未尝试过这两种方法,但在这种情况下我会探索这种方法。