Я изучаю Swift и пытаюсь поэкспериментировать. Я пытаюсь получить доступ к переменной и передать ее из подпредставления в NavigationLink. Переменная выбирается/управляется из списка в представлении в NavigationLink, и я хочу, чтобы она была передана обратно в представление основного экрана (ContentView) для использования в codeе там. Я пробовал использовать @Binding и @State, но я продолжаю получать ошибку в нижней части файла ContentView, говорящую "Отсутствует аргумент для параметра 'selection' в вызове". Кто-нибудь может помочь?
code ContentView:
code talamList:
`import SwiftUI
import AVKit
struct ContentView: View {
@State var tempo = Int(60)
@State var onOff = false
@State var searchText = ""
@Binding var selection: String
var body: some View {
VStack {
if onOff == false {
Text("🟠🟠🟠🟠🟠🟠")
}
else {
Text("🔵🔵🔵🔵🔵🔵")
}
NavigationView{
NavigationLink(destination: talamList()){
Text(talamList().selection ?? "Talams")
}
}
VStack{
Text("⏲")
Stepper {
Text("Tempo: \(tempo) BPM")
}
onIncrement: {
if tempo < 200{
tempo = tempo + 1
}
}
onDecrement: {
if tempo > 1{
tempo = tempo - 1
}
}
}
Toggle(isOn: $onOff) {
Text("Metronome Status: ")
}
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}`
`import SwiftUI
struct talamList: View {
@State var searchText = ""
@State var selection: String?
let talamDict = ["tisra triputa" : 7, "chatusra triputa (adi)" : 8, "khanda triputa" : 9, "misra triputa" : 11, "sankeerna triputa" : 13, "adi (2 kalai)" : 16, "tisra ekam" : 3, "chatusra ekam" : 4, "khanda ekam" : 5, "misra ekam" : 7, "sankeerna ekam" : 9, "tisra jhampa" : 6, "chatusra jhampa" : 7, "khanda jhampa" : 8, "misra jhampa" : 10, "sankeerna jhampa" : 12]
var searchResults: [String] {
let talams = Array(talamDict.keys)
if searchText.isEmpty {
return talams
}
else {
return talams.filter{$0.contains(searchText.lowercased())}
}
}
var body: some View {
NavigationStack{
List (searchResults, id: \.self, selection: $selection){ talam in
Text(talam)
}
.listStyle(.plain)
.searchable(text: $searchText)
.navigationTitle("Talams")
}
}
}
#Preview {
talamList()
}`
Авксентий
Вопрос задан10 февраля 2024 г.