Kategorien-Archiv non categorizzato

VonTobias Stephan

SwiftUI TableView ListView example sample code project

Secondo me SwiftUI è una pietra miliare assoluta nello sviluppo di software. Certamente ci vuole tempo per abituarsi a questo nuovo modo di sviluppare, ma il tempo che si risparmia su ulteriori progetti può essere ben investito. Qui trovate un semplice esempio di SwiftUI TableView. Il progetto campione può essere scaricato e utilizzato liberamente. Il progetto non contiene volutamente di più, in modo che le funzioni essenziali contribuiscano alla comprensione.

Download XCode Sample Project.

E‘ abbastanza impressionante come poche righe di codice si possa creare una TableView / ListView con SwiftUI. Basta creare un nuovo progetto e assicurarsi che SwiftUI sia selezionato come interfaccia utente.

SwiftUI Interace selektieren

Naturalmente sono ancora necessarie 3 immagini per questo esempio, che sono anche incluse nel progetto di esempio.

Assets für die Bilder in der Liste

Il codice effettivo del progetto.

import SwiftUI

struct ContentView: View {
    var oListArray: [oListenEntries] = testData
    var body: some View {
        List(oListArray) { item in
            Image(item.imageName).resizable().frame(width: 32.0, height: 20.0)
            VStack(alignment: .leading){
                Text(item.make)
                Text(item.model)
                    .font(.subheadline)
                    .foregroundColor(Color.gray)
            }
        }
    }

    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView(oListArray: testData)
        }
    }
}

Ecco il codice per l’array sottostante. Per questo ho creato una vista SwiftUI con il nome oListEntries.swift.

import SwiftUI

struct oListenEntries : Identifiable {
    var id = UUID()
    var make: String;
    var model: String;
    var imageName: String { return make }
}

let testData = [
    oListenEntries(make: "Flaschenhalter", model: "für Balkon oder Pool"),
    oListenEntries(make: "Pooladapter", model: "32 mm auf 12 mm"),
    oListenEntries(make: "Sektglashalter", model: "schwimmend")
]
VonTobias Stephan

Swiftui tabbar selecteditem

Durante i miei primi tentativi con Swift UI, ho cercato disperatamente di capire come selezionare la scheda attiva in modo programmatico. Il trucco sta nella rilegatura.

@State public var selection = 0

Con un clic sul tasto di selezione del tasto viene visualizzato il valore uno. Poiché la selezione è collegata direttamente alla barra delle schede, la voce attiva della scheda cambia a piacere.

Button("Go",action: {self.selection = 1})

Il binding è il token di accesso che si può passare per consentire l’accesso diretto in lettura e scrittura al valore senza concedere il possesso (nel senso di mantenere un tipo di riferimento) o la copia (per un tipo di valore).

Quando l’utente seleziona un tab nella vista tab, cambia il valore unilateralmente tramite binding e assegna il corrispondente .tag(…) alla variabile selectedTab. Questo funziona allo stesso modo per @State e ObservableObject.

Il programmatore può anche assegnare un valore a questa variabile selezionataTab in qualsiasi momento – e la TabView cambia immediatamente la scheda visualizzata.
Questa è la chiave per la navigazione programmatica in SwiftUI.

Ecco un esempio che si può copiare / incollare direttamente per giocare con esso.

import SwiftUI

struct ContentView: View {
    @State public var selection = 0

    let defaults = UserDefaults.standard

    var body: some View {
        TabView(selection: $selection){
            VStack {
                Text("First View")
                Button("Go",action: {self.selection = 1})
            }
            .font(.title)
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)
            Text("Second View")

                .font(.title)
                .tabItem {
                    VStack {
                        HStack{
                            Image("second")
                            Text("Second")
                        }
                    }
            }
            .tag(1)
        }
    }
}



struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}