设置:
我的应用程序有一个带有一些按钮的工具栏和一个列表。列表单元格可以滑动。当滑动单元格时,我想禁用工具栏按钮,因为滑动必须完成,无论是通过点击滑动按钮还是点击单元格。
问题:
按钮的enable
状态取决于单元格是否被刷过,但我找不到检查这一点的方法。
我尝试了滑动按钮的.onAppear
和.onDisappear
,但只有当按钮添加到视图层次结构时才会调用.onAppear
。当点击单元格以取消滑动单元格时,按钮会移出视线,但不会从视图层次结构中删除,并且不会调用.onDisappear
。此外,如果再次滑动单元格,按钮只会移入以变得可见,但不添加到视图层次结构,即,不再次调用.onAppear
。
我还想在列表单元格中使用GeometryReader
,因为在滑动或取消滑动期间,单元格中视图的框架会发生变化。然而,GeometryReader仅在视图被重绘时更新这些值,而单元格在滑动/取消滑动期间不会被重绘。
问题:
如何在滑动单元格时禁用工具栏按钮?
1条答案
按热度按时间9gm1akwq1#
使用
GeometryReader
解决的问题:在名为
dataSource
的ViewModel中,我声明了2个变量。如果其中任何一个为true,则所有工具栏按钮都将被禁用:然后我将以下叠加应用到CellView:
需要覆盖以保持单元布局不变。
当单元格被滑动时,单元格会向左或向右移动,以使滑动按钮可见。这会更改全局
minX
。根据当前的滑动状态,ViewModel中的变量被设置。由于它们被发布,这会重绘工具栏。它的按钮使用这些变量作为它们的
enabled
属性。