diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

.refreshable() #

Os datos que se amosan nunha pantalla a miúdo cambian co tempo.

  • O paradigma estándar dentro das aplicacións iOS é que o usuario realice un refresco cara abaixo para actualizar os datos mostrados.
  • Durante o proceso de actualización, a aplicación normalmente mostrará un indicador de progreso xiratorio despois do cal se amosan os datos máis recentes.

Para facilitar isto, SwiftUl proporciona o modificador refreshable(). Cando se aplica a unha vista, un xesto de refresco cara abaixo nesa vista mostrará o indicador de progreso e executará o código no peche do modificador.

Por exemplo:

import SwiftUI

struct ListaTarefas: Identifiable {
    var id = UUID()
    var tarefa: String
    var nomeImaxe: String
}

struct ContentView: View {
    @State var lista: [ListaTarefas] = [
    ListaTarefas(tarefa: "Tirar o lixo", nomeImaxe: "trash.circle.fill"),
    ListaTarefas(tarefa: "Recoller aos nenos", nomeImaxe: "person.2.fill"),
    ListaTarefas(tarefa: "Lavar o coche", nomeImaxe: "car.fill")
    ]
    
    @State private var estadoBoton = true
    
    var body: some View {
        List {
            Section(header: Text("Axustes")){
                Toggle(isOn: $estadoBoton) {
                    Text("Permitir notificacións")
                }
            }
    
            Section(header: Text("Tarefas"), footer: Text("Non te esquezas de nada 🧐")){
                ForEach(lista) { tarefa in
                    HStack {
                        Image(systemName: tarefa.nomeImaxe)
                        Text(tarefa.tarefa)
                    }
                }
            }
        }
        .refreshable {
            lista += [
                ListaTarefas(tarefa: "Encargar a cea", nomeImaxe: "eurosign.circle.fill"),
                ListaTarefas(tarefa: "Chamar a miña colega Lola Mento", nomeImaxe: "phone.fill"),
            ]
        }
    }
}

.onDelete() #

É común que unha aplicación permita ao usuario eliminar elementos dunha lista e, nalgúns casos, mesmo mover un elemento dunha posición a outra.

  • A eliminación pódese habilitar engadindo un modificador onDelete() a cada celda da lista, especificando un método que eliminará o elemento.
  • Cando se chama a este método, pasaráselle un obxecto IndexSet que contén os desprazamentos das filas que se eliminan
import SwiftUI

struct ListaTarefas: Identifiable {
    var id = UUID()
    var tarefa: String
    var nomeImaxe: String
}



struct ContentView: View {
    @State var lista: [ListaTarefas] = [
    ListaTarefas(tarefa: "Tirar o lixo", nomeImaxe: "trash.circle.fill"),
    ListaTarefas(tarefa: "Recoller aos nenos", nomeImaxe: "person.2.fill"),
    ListaTarefas(tarefa: "Lavar o coche", nomeImaxe: "car.fill")
    ]
    
    @State private var estadoBoton = true
    
    var body: some View {
        NavigationView {
            List {
                Section(header: Text("Axustes")){
                    Toggle(isOn: $estadoBoton) {
                        Text("Permitir notificacións")
                    }
                }
        
                Section(header: Text("Tarefas"), footer: Text("Non te esquezas de nada 🧐")){
                    ForEach(lista) { tarefa in
                        NavigationLink(destination: Text(tarefa.tarefa)){
                            HStack {
                                Image(systemName: tarefa.nomeImaxe)
                                Text(tarefa.tarefa)
                            }
                        }
                    }
                    .onDelete(perform: borrarTarefa)
                }
            }
            .navigationBarTitle(Text("Lista de tarefas"))
            .navigationBarItems(trailing: Button(action: engadirTarefa){
                Text("Engadir tarefa")
                
            })
        }
    }
    func engadirTarefa() {
        //
    }
    func borrarTarefa(at offsets:IndexSet) {
        //Borrar elementos
    }
}

.onMove() #

Podemos permitir ao usuario mover elementos cara arriba e cara abaixo nunha lista:

  • Empregamos o modificador onMove() a cada celda da lista, especificando o método que moverá o elemento.
  • Cando se chama a este método, pasaráselle un obxecto IndexSet que contén as posicións das filas que se moven e un enteiro que indica a posición destino
  • Temos tamén que engadir unha instancia de EditButton á lista. Cando se pulsa, este botón cambia a lista ao modo editable e permite que o usuario mova e elimine os elementos. Este botón de edición engádese como un elemento da barra de navegación co modificador navigationBarltems()
import SwiftUI

struct ListaTarefas: Identifiable {
    var id = UUID()
    var tarefa: String
    var nomeImaxe: String
}



struct ContentView: View {
    @State var lista: [ListaTarefas] = [
    ListaTarefas(tarefa: "Tirar o lixo", nomeImaxe: "trash.circle.fill"),
    ListaTarefas(tarefa: "Recoller aos nenos", nomeImaxe: "person.2.fill"),
    ListaTarefas(tarefa: "Lavar o coche", nomeImaxe: "car.fill")
    ]
    
    @State private var estadoBoton = true
    
    var body: some View {
        NavigationView {
            List {
                Section(header: Text("Axustes")){
                    Toggle(isOn: $estadoBoton) {
                        Text("Permitir notificacións")
                    }
                }
        
                Section(header: Text("Tarefas"), footer: Text("Non te esquezas de nada 🧐")){
                    ForEach(lista) { tarefa in
                        NavigationLink(destination: Text(tarefa.tarefa)){
                            HStack {
                                Image(systemName: tarefa.nomeImaxe)
                                Text(tarefa.tarefa)
                            }
                        }
                    }
                    .onDelete(perform: borrarTarefa)
                    .onMove(perform: moverTarefa)
                }
            }
            .navigationBarTitle(Text("Lista de tarefas"))
            .navigationBarItems(trailing: Button(action: engadirTarefa){
                Text("Engadir tarefa")
            })
            .navigationBarItems(trailing: EditButton())
        }
    }
    func engadirTarefa() {
        //
    }
    func borrarTarefa(at offsets:IndexSet) {
        //Borrar elementos
    }
    func moverTarefa(at offsets:IndexSet, to destination: Int) {
        //Mover elementos
    }
}

Share Your Valuable Opinions