Синтаксис списка закрытия листа 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)
                }
            }
    }
}
Другие вопросы по тегам