Der Toggle Switch in SwiftUI hat leider keinen „action“ event, wie der Button. Wenn man in die geschweiften Klammern einen Funktionsaufruf einträgt, für das zu folgender Fehlermeldung:
Static method ‚buildBlock‘ requires that ‚String‘ conform to ‚View‘
Der Trick ist, dass man hier ein View erzeugen muss.

Im Beispielcode findest Du die Zeile:
Text("Toggle \(ToggleAction(State: showResubmission))")Das ist Lösung. Nimm die Funktion ToggleAction und baue sie für Deine Zwecke aus. In diesem Beispiel ist einfach nur die Statusvariable als Rückgabewert eingetragen.
//
// ContentView.swift
// ToggleSwitchActionDemo
//
// Created by T. Stephan on 22.02.20.
// Copyright © 2020 eCommerce - Tobias Stephan. All rights reserved.
//
import SwiftUI
import Combine
class MainClass: ObservableObject {
public var ToggleSwitchState = false
init(){
}
}
struct ContentView: View {
@ObservedObject var oMainClass = MainClass()
@State private var showResubmission = false
var body: some View {
Toggle(isOn: $showResubmission){
Text("Toggle \(ToggleAction(State: showResubmission))")
.padding()
}
}
func ToggleAction(State: Bool) -> String {
if (State != oMainClass.ToggleSwitchState)
{
oMainClass.ToggleSwitchState = State
//do something else...
print("Toggle switched...")
}
return String(State)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}


Über den Autor