Синтаксис списка закрытия листа SwiftUI
Как добавить список захвата в закрытие SwiftUI .sheet(content:)?
У меня есть лист в SwiftUI и в содержимом: закрытие я проверяю значение необязательного, чтобы определить, какое представление показывать. При первом запуске значение всегда равно нулю, даже если я установил его заранее. Я отправил отчет об ошибке, и Apple говорит, что если я сошлюсь на переменную в списке захвата замыкания, то она будет работать так, как ожидалось. Я новичок в SwiftUI и не смог понять правильный синтаксис для этого. Каков синтаксис?
struct ContentView: View {
@State var presentButtonTwoDetail: Bool = false
@State var seletedIndex: Int? = nil
var body: some View {
Text("Hello")
.sheet(isPresented: $presentButtonTwoDetail) {
selectedIndex = nil
} content: {
{
[selectedIndex] // This syntax won't compile
() -> View in
if let theIndex = selectedIndex {
DetailView(selectedIndex: theIndex)
} else {
// This gets called on the first run only even when the `selectedIndex` is not nil.
DetailView(selectedIndex: 0)
}
}
}
}
}
1 ответ
Это компилируется.
struct ContentView: View {
@State var presentButtonTwoDetail: Bool = false
@State var selectedIndex: Int? = nil
var body: some View {
Text("Hello")
.sheet(isPresented: $presentButtonTwoDetail) {
selectedIndex = nil
} content: { [selectedIndex] in
if let theIndex = selectedIndex {
DetailView(selectedIndex: theIndex)
} else {
DetailView(selectedIndex: 0)
}
}
}
}