我遇到了按钮选择问题。我使用枚举来跟踪应用程序中的页面及其值,如页面标题和页面图标。我使用这些值在VStack中创建一个包含按钮的菜单。我检索所有枚举值(AppScreen)使用ForEach并将它们填充到按钮的标签中。到目前为止,一切顺利,但当我选择一个按钮时,图标动画也会影响之前选择的按钮。让我举一个例子:
我的按钮的标题是“按钮1”和“按钮2”以及它们的相关图标。当我选择“按钮1”时,图标动画工作得很好,但是当我选择“按钮2”时,它不能正常工作,因为它同时显示“按钮1”和“按钮2”的图标,而不仅仅是“按钮2”。
我哪里做错了?
下面是我的代码:
import Foundation
enum AppScreen: CaseIterable, Identifiable {
case btn1, btn2
var id: AppScreen { self }
var screenName: String {
switch self {
case .btn1: "btn1"
case .btn2: "btn2"
}
}
var screenIcon: String {
switch self {
case .btn1: "exclamationmark.arrow.triangle.2.circlepath"
case .btn2: "person.2"
}
}
}
个字符
1条答案
按热度按时间tv6aics11#
.symbolEffect
的documentation声明“每次值更改时都会触发动画”。因此,当条件从false变为true时会触发它,但当条件从true变为false时也会触发它。为了解决这个问题,我认为你需要为每个按钮设置单独的标志,并且标志应该只在选择被应用时改变,而不是在选择被移开时改变。像这样:
个字符