SwiftUI: Jak wywołać funkcję do wypełnienia siatki LazyVGrid

0

Pytanie

Pracuję nad pewnym kodem w SwiftUI (uczę się w trakcie), gdzie buduję pionową siatkę elementów (jest to mocno uproszczone dla celów tego wydania).:

let col1 = GridItem(alignment: .leading)
let col2 = GridItem(alignment: .trailing)

LazyVGrid(columns: [col1, col2]) {
    Text("C1")
    Text("C1")
    Text("C2")
    Text("C2")
}

Więc dostaję coś takiego:

+----+----+
| C1 | C1 |
+----+----+
| C2 | C2 |
+----+----+

Teraz w moim kodzie robię coś innego, więc chciałbym wyodrębnić funkcję, aby mój kod wyglądał mniej więcej tak:

let col1 = GridItem(alignment: .leading)
let col2 = GridItem(alignment: .trailing)

LazyVGrid(columns: [col1, col2]) {
    row("C1")
    row("C2")
}

func row(text: String) -> ???? {
    Text(text)
    Text(text)
}

Ale trudno mi zrozumieć, jak to zrobić. Zwraca, czy funkcja tablicy? czy jest jakiś aspekt budowniczych Swift, który mogę użyć tutaj? Próbowałem tablicy, ale LazyVGridkonstytucji to nie podobało.

swiftui
2021-11-23 14:44:00
1

Najlepsza odpowiedź

3

Poznaj@ViewBuilder atrybut. To sprawia, że funkcję zachowywać się jak zamknięcie, do którego chcesz przejść LazyVGrid i wielu z odsłon SwiftUI.

@ViewBuilder
func row(text: String) -> some View {
    Text(text)
    Text(text)
}
2021-11-23 15:17:52

Oczywiście. Dziękuję.
drekka

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................