A propriedade @Binding
Parte da seção Introdução ao SwiftUI do Journey de Swift da Coddy. Lição 39 de 50.
Quando uma tela cresce, você a divide em views menores. Uma view filha que precisa alterar o estado da view pai declara um @Binding em vez de ser proprietária do valor:
struct VolumeControl: View {
@Binding var volume: Int
var body: some View {
Stepper("Volume: \(volume)", value: $volume, in: 0...10)
}
}O componente pai mantém o @State e passa uma vinculação a ele com $:
struct ContentView: View {
@State private var volume = 5
var body: some View {
VStack {
VolumeControl(volume: $volume)
Text(volume == 0 ? "Muted" : "Playing")
}
}
}Há um valor pertencente a ContentView. O stepper no componente filho o altera por meio da vinculação, e o texto do componente pai acompanha essa alteração. @State é proprietário de um valor; @Binding toma um emprestado de outro lugar.
Desafio
MédioThemeToggle deve alternar o darkMode do componente pai. Altere sua propriedade para um @Binding, vincule seu Toggle a ela e passe $darkMode de ContentView. O texto deve ser Dark theme enquanto o alternador estiver ativado.
Experimente você mesmo
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Introdução ao SwiftUI
4Modificadores
PreenchimentoPlanos de fundoOrdem dos modificadoresMolduras e formasRecapitulação - Criador de distintivos10Projeto - Coddy Coffee
Visão geral do projetoTelas de bebidas5Estado e Botões
BotõesA Propriedade @StateEstado Verdadeiro ou FalsoViews CondicionaisRecapitulação - Marcador de Pontos6Entrada do Usuário
Campo de TextoAlternânciaControle Deslizante e IncrementalSeletorRevisão - Formulário de Pedido9Compartilhando Dados
A propriedade @BindingObjetos observáveisObjetos de ambienteRecapitulação — Contador de passosPratique por conta própria: Playground de Swift