首页 > 解决方案 > 如何订购 3 路领带?

问题描述

我正在开发一个应用程序,该应用程序涉及输入玩家最终获得的卡片数量,并将它们排列在一个列表中。但是如果有 2 或 3 方式的领带,我希望用户能够有一个菜单,让他们选择谁拥有最高卡到最低卡的顺序,这样我就可以组织列表。我如何让用户订购它们,比如什么样的警报/弹出窗口可以让我这样做?

编辑:基本上我在问如何制作一个选择器,让您将多个项目排列成特定的顺序,但似乎最好的办法就是让每个项目的按钮出现一个堆栈,您可以在其中单击它们并从在那里创建您的订单。希望这对处于类似情况的任何人有所帮助!

标签: swiftuiswiftui-list

解决方案


对于他们所做的不仅仅是点击一个选项(在您的情况下,您希望他们订购各种卡片)的那种用户交互,我将创建您自己的自定义视图,而不是使用警报或操作表或类似的。

您实现的方式将取决于您希望它的外观。如果您希望视图显示在当前视图之上(有点像警报),它只占用内容所需的空间),那么您可以嵌入 zStack。如果您希望它从底部向上滑动,其大小几乎与全屏相同,则可以使用工作表(有时也称为模态)。

有点难以解释它们的视觉效果——如果你用谷歌搜索“SwiftUI sheet”然后你就会明白我的意思(如果你还不熟悉它们)

ZStack 您将当前视图放在 ZStack 中,然后创建一个新视图,该视图位于 ZStack 之后,但您将其包装在 if 语句中,以便根据布尔值为真有条件地显示。

例如

if gameTied { ChooseSortOrderView() }

然后当你的游戏结束时——如果是平局,你将布尔值设置为 true 并弹出新视图。

你可以传入绑定的卡片,让用户通过拖放、表单、选择器(无论你想要什么)对它们进行排序,然后提交。然后将 bool 设置回 false 以使视图消失。

sheet 使用 zstack 的另一种替代方法是 sheet,因此您会看到模态视图。类似的方法,但不是 ZStack,而是使用 .sheet 修饰符。


推荐阅读