如何取消选择 NavigationLink 中的列表按钮
How to deselect a list button within a NavigationLink
我有一个列表,其中包含 NavigationLink 中的列表项之一,因为它需要在点击后移动到详细视图。当我从详细视图返回时,列表按钮仍处于选中状态。在 SwiftUI 之前,我只是告诉 .isSelected 等于 false 但我不知道如何在 SwiftUI 中做到这一点?
List {
NavigationLink(destination: SettingsStartdayView()){
HStack {
Text("Start Day Notification")
Spacer()
Text(startDayNotificationSetting)
.font(.subheadline)
.foregroundColor(Color.gray)
.multilineTextAlignment(.trailing)
}
}
}
Starting List View
After Detail View, Back
此视图正在通过以下方式加载到主应用程序的视图中:
NavigationView{
TabView(selection: $isSelectedTab) {
SettingsView()
.tabItem{
}.tag(1)
这是一个 public 项目,其中包含我正在处理的内容的完整示例:https://gitlab.com/jammyman34/test-sounds-project
转到“设置”选项卡,然后单击顶部列表项转到详细信息页面。请注意您单击的列表在您返回时如何保持选中状态。除非你切换到另一个选项卡,否则它不会清除。
这里的问题是 Text
,它位于 SettingsView 中 List
的上方 - 报告了一个错误 here。
相反,您可以使用 原生 导航标题并将其附加到 TabView。
struct SettingsHomeView: View {
@State var startDayNotificationSetting: String = "8:30AM"
@State var appVersion: String = "0.01"
var body: some View {
// no `Text` above `List`
List {
NavigationLink(destination: SettingsStartdayView()){
HStack {
Text("Start Day Notification")
Spacer()
Text(startDayNotificationSetting)
.font(.subheadline)
.foregroundColor(Color.gray)
.multilineTextAlignment(.trailing)
//Image(systemName: "chevron.right")
}
}
}
}
}
struct ContentView: View {
@State private var isSelectedTab = 1 // select the first tab
var body: some View {
NavigationView{
TabView(selection: $isSelectedTab) {
// ...
}
// control displaying the title depending on the `isSelectedTab`
.navigationTitle("Settings")
.navigationBarHidden(isSelectedTab == 1)
}
}
}
我有一个列表,其中包含 NavigationLink 中的列表项之一,因为它需要在点击后移动到详细视图。当我从详细视图返回时,列表按钮仍处于选中状态。在 SwiftUI 之前,我只是告诉 .isSelected 等于 false 但我不知道如何在 SwiftUI 中做到这一点?
List {
NavigationLink(destination: SettingsStartdayView()){
HStack {
Text("Start Day Notification")
Spacer()
Text(startDayNotificationSetting)
.font(.subheadline)
.foregroundColor(Color.gray)
.multilineTextAlignment(.trailing)
}
}
}
Starting List View | After Detail View, Back |
---|---|
此视图正在通过以下方式加载到主应用程序的视图中:
NavigationView{
TabView(selection: $isSelectedTab) {
SettingsView()
.tabItem{
}.tag(1)
这是一个 public 项目,其中包含我正在处理的内容的完整示例:https://gitlab.com/jammyman34/test-sounds-project
转到“设置”选项卡,然后单击顶部列表项转到详细信息页面。请注意您单击的列表在您返回时如何保持选中状态。除非你切换到另一个选项卡,否则它不会清除。
这里的问题是 Text
,它位于 SettingsView 中 List
的上方 - 报告了一个错误 here。
相反,您可以使用 原生 导航标题并将其附加到 TabView。
struct SettingsHomeView: View {
@State var startDayNotificationSetting: String = "8:30AM"
@State var appVersion: String = "0.01"
var body: some View {
// no `Text` above `List`
List {
NavigationLink(destination: SettingsStartdayView()){
HStack {
Text("Start Day Notification")
Spacer()
Text(startDayNotificationSetting)
.font(.subheadline)
.foregroundColor(Color.gray)
.multilineTextAlignment(.trailing)
//Image(systemName: "chevron.right")
}
}
}
}
}
struct ContentView: View {
@State private var isSelectedTab = 1 // select the first tab
var body: some View {
NavigationView{
TabView(selection: $isSelectedTab) {
// ...
}
// control displaying the title depending on the `isSelectedTab`
.navigationTitle("Settings")
.navigationBarHidden(isSelectedTab == 1)
}
}
}