Servus, ich bin neu im Forum und auch ziemlich neu in Swift.
ich habe mir eine einfache Struct geschrieben, um mir die Arbeit für Sections geschrieben:
Alles anzeigen
Sowie z.B. eine Struct für Toggle:
Alles anzeigen
Und verwende das ganze so:
Alles anzeigen
Wenn ich nur einen PropertyToggle im Closure habe funktioniert alles, habe ich mehrere bekomme ich "Type '()' cannot conform to 'View'".
Ich checks einfach nicht, wie ich den Code ändern muss, damit es mit mehreren funktioniert.
Achso, ist SwiftUI mit UIKit, falls es relevant ist.
ich habe mir eine einfache Struct geschrieben, um mir die Arbeit für Sections geschrieben:
Quellcode
- struct PropertiesSection : View {
- @EnvironmentObject var configuration : Configuration
- var header, footer : LocalizedStringKey?
- var content : AnyView
- var body : some View {
- Section {
- self.content
- } header: {
- if(header != nil) {
- Text(header!)
- .lineLimit(1)
- }
- } footer: {
- if(footer != nil && self.configuration.displayOptions.showDescriptions) {
- Text(footer!)
- }
- }
- }
- init<Content>(header : LocalizedStringKey? = nil, footer : LocalizedStringKey? = nil, content : () -> Content) where Content : View {
- self.header = header
- self.footer = footer
- self.content = AnyView(content())
- }
- }
Sowie z.B. eine Struct für Toggle:
Quellcode
- struct PropertyToggle : View {
- var image : String
- var label : LocalizedStringKey
- var property : Binding<Bool>
- var body : some View {
- Toggle(isOn: self.property) {
- HStack(spacing: .zero) {
- Components.propertyIcon(systemName: self.image)
- Components.propertyLabel(localizedStringKey: self.label)
- }
- }
- }
- }
Quellcode
- Components.PropertiesSection(header: "configuration.privacy.screen_protection.header", footer: "configuration.privacy.screen_protection.footer") {
- Components.PropertyToggle(
- image: "macwindow.on.rectangle",
- label: "configuration.privacy.screen_protection.app_switcher.label",
- property: self.$configuration.privacy.screenProtection.appSwitcher
- )
- // Components.PropertyToggle(
- // image: "camera",
- // label: "configuration.privacy.screen_protection.photo.label",
- // property: self.$configuration.privacy.screenProtection.photo
- // )
- // Components.PropertyToggle(
- // image: "video",
- // label: "configuration.privacy.screen_protection.video.label",
- // property: self.$configuration.privacy.screenProtection.video
- // )
- }
Ich checks einfach nicht, wie ich den Code ändern muss, damit es mit mehreren funktioniert.
Achso, ist SwiftUI mit UIKit, falls es relevant ist.