У меня есть серия представлений в SwiftUI. Один из них представляет собой представление меню, которое состоит из списка ссылок навигации, заключенных в представление навигации.
Код выглядит следующим образом.
var body: some View {
NavigationView {
List {
HStack {
NavigationLink(destination: History(), isActive: $isHistoryViewActive) {
Image(systemName: "clock")
Text("History")
}
}
HStack {
NavigationLink(destination: Settings(), isActive: $isSettingsActive) {
Image(systemName: "gear")
Text("Settings")
}
}
HStack {
Image(systemName: "info.circle.fill")
Button(action: {
...
}) {
Text("My Button")
}
}
}
}
}
Представление Настройки выглядит следующим образом
var body: some View {
List {
...
Section(header: "Background Music") {
Toggle("Play", isOn: $isBackGroundMusicOn)
}
Section(header: "Voice Setting") {
HStack {
NavigationLink(destination: VoiceList() {
Text(self.voiceNames[self.selectedVoice])
}
}
}
}
И, наконец, вид VoiceList выглядит следующим образом:
var body: some View {
List {
ForEach(0 ..< VoiceList.voiceNames.count) {voiceIndex in
HStack {
Button(action: {
voiceChanged(selectedVoice: voiceIndex)
}){
Text(VoiceList.voiceNames[voiceIndex])
}
Spacer()
Image(systemName: "checkmark")
.frame(alignment: .trailing)
.foregroundColor(.blue)
.isHidden(hidden: voiceIndex != selectedVoice)
}
}
}
}
Проблема, с которой я столкнулся, заключается в том, что, когда приложение возвращается из представления VoiceList в представление Настройки, NavigationLink остается выделенным, как если бы он все еще активен, как показано на прилагаемом снимке экрана. Честно говоря, я понятия не имею, что может быть причиной этого. Приветствуются любые идеи или идеи.