В моем VStack есть ForEach l oop, так что для каждого элемента моего перечисления создается новая "ячейка". Это работает просто отлично. Я могу передать название и номер для каждой ячейки, но в каждой ячейке есть кнопка, которая переключает вид листа. Каждый лист должен содержать соответствующий текст в виде прокрутки. Поэтому текст также приводится в перечислении.
Проблема: Но когда я пытаюсь передать этот infoText через element.infoText для каждого листа, будет представлен infoText первого элемента в перечислении.
ForEach l oop:
struct ListView: View{
@State var infoSheetIsPresented: Bool = false
var body: some View{
VStack {
ForEach(WelcomeCardViewContent.allCases, id: \.self) {
element in
HStack {
Text(element.text)
Button(action: {
self.infoSheetIsPresented.toggle()
}) {
Image(systemName: "info.circle")
}
.sheet(isPresented: self.$infoSheetIsPresented) {
Text(element.infoText)
}
}
}
}
}
}
А вот мое перечисление. Конечно, есть и InfoSheetView, но, как я уже сказал, это просто представление с прокруткой текста. Текст передается с простой «текстовой» константой. Для простоты я заменил отдельный вид листа на простой текстовый вид -> та же проблема.
enum WelcomeCardViewContent: String, CaseIterable{
case personalData
case bodyParameters
var text: String {
switch self{
case .personalData:
return "Personal Data"
case .bodyParameters:
return "Body Parameters"
}
}
var infoText: String {
switch self{
case .personalData:
return "1 Lorem ipsum dolor.."
case .bodyParameters:
return "2 Lorem ipsum dolor sit amet."
}
}
}
Спасибо за ваш совет ^^.