diff --git a/Examples/SwiftUIExample/AppSpiceStore.swift b/Examples/SwiftUIExample/AppSpiceStore.swift index 64d633d..7574909 100644 --- a/Examples/SwiftUIExample/AppSpiceStore.swift +++ b/Examples/SwiftUIExample/AppSpiceStore.swift @@ -22,6 +22,11 @@ final class AppSpiceStore: SpiceStore { } .padding() @Spice var version = LabeledContent("Version", value: "1.0 (1)") + @Spice var userId: String = "Not loaded" + + func onAppear() { + userId = "\(Int.random(in: 0...100))" + } } final class DebuggingSpiceStore: SpiceStore { diff --git a/Examples/UIKitExample/AppSpiceStore.swift b/Examples/UIKitExample/AppSpiceStore.swift index 3d493d8..ac6c47a 100644 --- a/Examples/UIKitExample/AppSpiceStore.swift +++ b/Examples/UIKitExample/AppSpiceStore.swift @@ -25,8 +25,13 @@ final class AppSpiceStore: SpiceStore { } .padding() @Spice var version = LabeledContent("Version", value: "1.0 (1)") + @Spice var userId: String = "Not loaded" private init() {} + + func onAppear() { + userId = "\(Int.random(in: 0...100))" + } } final class DebuggingSpiceStore: SpiceStore { diff --git a/Sources/Spices/SpiceEditor.swift b/Sources/Spices/SpiceEditor.swift index 6bbed51..9e973e4 100644 --- a/Sources/Spices/SpiceEditor.swift +++ b/Sources/Spices/SpiceEditor.swift @@ -68,6 +68,9 @@ public struct SpiceEditor: View { MenuItemListView(items: spiceStore.menuItems, title: title) { dismiss() } + .onAppear { + spiceStore.onAppear() + } } .configureSheetPresentation() .environmentObject(UserInteraction()) diff --git a/Sources/Spices/SpiceStore.swift b/Sources/Spices/SpiceStore.swift index e8b5d43..2d5128f 100644 --- a/Sources/Spices/SpiceStore.swift +++ b/Sources/Spices/SpiceStore.swift @@ -33,12 +33,18 @@ public protocol SpiceStore: AnyObject, ObservableObject { /// /// The default implementation returns `UserDefaults.standard`. var userDefaults: UserDefaults { get } + + /// Call when the store appear on the screen + func onAppear() } public extension SpiceStore { var userDefaults: UserDefaults { .standard } + + func onAppear() { + } } public extension SpiceStore {