问题标签 [swiftui-swipeactions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何更改 SwiftUI swipeAction 按钮的文本颜色?
我的 SwiftUI 列表中有一个 swipeAction,我似乎无法更改文本的颜色。它总是白色的。
我试图将按钮设置为 PlainButtonStyle() 但这也没有用
ios - 滑动动作图像颜色 SwiftUI
我正在尝试在 SwiftUI 中列表的滑动操作中修改图像的颜色。
我尝试了几件事:
- 使用渲染模板设置图像,然后应用 foregroundColor 修改器
- 将foregroundColor修饰符直接设置为按钮
- 试图设置自定义图像
我为此搜索了很多,但我没有找到任何东西,不仅没有找到解决方案,我也没有找到 NO,比如“你不能那样做”,所以这个问题是给我和任何人的未来试图做同样的事情,他们能够找到一个快速的解决方案或一个快速的“那是不可能的”。
我的一段代码,非常简单:
注意:我知道我可以制作自定义拖动手势并手动执行所有这些操作,但我想知道是否可以使用滑动操作修饰符来完成。
ios - SwiftUI 在 iOS 15 上使用 editMode 的 onDelete 修饰符和自定义 Swipe Actions
初始描述
我目前有一个动态列表,我正在使用 SwiftUI 内置editMode
功能和内置功能,EditButton()
以便让用户从列表中删除项目。
对于删除部分,我正在使用onDelete
添加尾随红色删除滑动手势的修饰符,就像你现在一样。
这是一个例子:
目标
现在我还想使用 iOS 15.swipeActions
修改器,它允许添加我们自己的自定义前导或尾随滑动手势。
我希望用户也能够通过向右滑动来编辑列表元素,所以我在我的行中添加了一个领先的滑动动作:
按钮操作显然会包含一个允许编辑的代码。
问题
使用.swipeActions
修饰符会破坏修饰符的正常行为,editMode
尤其是.onDelete
修饰符。实际上,使用此设置,我无法再向左滑动以删除该行。
那么问题来了:如何在列表中使用 SwiftUIeditMode
的.onDelete
修饰符以及我自己的自定义leading
滑动操作?
最小的可重现示例
Xcode 游乐场,适用于 iOS 15。
您可以测试以下内容:如果您评论或删除此部分:
然后.onDelete
修改器再次起作用。将其重新打开会破坏该.onDelete
功能。
附加信息
因为我使用了修饰符,所以我正在为iOS 15构建这个应用程序。.swipeActions
我愿意接受任何可以实现我的目标的解决方案,即让用户向左滑动以删除行并向右滑动以触发任何版本代码。即使这意味着使用修饰符的另一种方式,或者SwiftUI.swipeActions
的修饰符的另一种方式,或者两者兼而有之。.onDelete
editMode
因为这个修改器,我不得不为 iOS 15 构建应用程序.swipeActions
,所以如果我可以为较低的 iOS 版本构建应用程序,那就更好了。
如果您需要任何其他信息,请立即告诉我。谢谢你。
swiftui - 为什么 swipeActions 不适用于侧边栏样式列表?
我正在尝试将 SwipeActions 添加到 SwiftUI 中的列表中。它按预期工作,但是一旦我将.sidebar
listStyle 提供给列表,它就会停止工作。这是一个显示此问题的最小代码示例(可在 Swift Playgrounds 中使用):
我搜索了 Google 和 Stackoverflow,但没有找到任何答案。不同的“风格”也有不同的行为似乎很不直观。我错过了什么吗?将其包装Text
在一个ForEach
循环中也不会改变任何东西。
list - 使用 ForEach 中的 SwiftUI 3.0 .swipeActions,您如何在将 ForEach 的输入参数传递给该视图时让一个动作转到另一个视图?
我想将 .swipeAction 添加到 ForEach 列表中,我想在其中将用户选择的列表中的元素传递给另一个调用的视图。换句话说,当用户在列表中的某个项目上滑动时,我希望用户被带到一个新视图,该视图具有列表中该项目的内容,以便它可以在该新视图中显示该项目的详细信息。
话虽如此,我已经模拟了这个简单的例子,我希望它有助于说明我遇到的问题。
我发现,如果我将 NavigationLink 作为按钮放在 .swipeActions 上,它会正确显示,但是当点击 NavigationLink 时不会执行,因此不会将您带到新视图。
如果我将相同的导航链接向下移动到 .swipeActions 之后,并使用一些 @State 调用它,它可以工作,但它会在 ForEach 列表中的每一行之间添加另一行。换句话说,ForEach 当然将其视为其列表的一部分,并将其与列表中的其他项目一起添加。即使我在 NavigationLink 上添加了 .hidden(),它仍然会占用新行的空间,它只是隐藏了行的内容,而不是行本身。
如果我将 NavigationLink 移到 ForEach 之外,则来自 ForEach 的颜色输入参数超出范围。它将正确构建视图并执行链接(使用操作和一些@State),但它不能传递来自 ForEach 的颜色输入,因为它当然超出了范围。如果您在其位置硬编码颜色,则它可以正常工作,当然除了它没有用户从列表中选择的颜色这一事实。
请注意,我还在视图底部放置了一个简单的 NavigationLink,以便我可以看到它在 .swipeActions 问题之外正常工作,并且它在使用像 Color.red 这样的硬编码颜色值时也能正常工作。
这当然是一个非常虚构的例子,但我认为它确实表明了这个问题。
有没有人使用 .swipeActions 调用 NavigationLink 到将用户选择的项目(在本例中为颜色)传递到该视图的新视图?如果是这样,你如何让它发挥作用。感觉就像先有鸡还是先有蛋的问题,我似乎无法同时访问输入数据(颜色)可用的范围,以及未成为 ForEach 列表视图一部分的 NavigationLink。
有人有想法么?提前感谢您的任何和所有评论、更正、想法等。
ios - 将视图转换为图像问题
我正在使用这里的教程https://www.hackingwithswift.com/quick-start/swiftui/how-to-convert-a-swiftui-view-to-an-image
我想将此代码应用于
但结果我在这种特殊情况下得到了空的灰色按钮(并且在我的真实代码运行时错误中关于重绘时间的改变)
怎么了?
swiftui - 在 SwiftUI 中动态更改 swipeActions
我正在尝试根据付款状态将 swipeAction 从“Paid”更改为“UnPaid”,但不知何故似乎失败了。错误:“编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式”
感谢任何帮助