Intelligently educate your users about the right features at the right time with TipKit

Posts under TipKit tag

22 Posts

Post

Replies

Boosts

Views

Activity

How to connect a @Parameter of a Tip to my app's state?
I have an observable object which is a model a view. I also have a Tip (from TipKit) with @Parameter and a rule. The source of truth for the state is in the observable object, however the Tip needs to be updated when state changes. So how do I bind between the two? The way I was thinking was to sink updates from objectWillChange and check if Tips parameter needs to be updated or add didSet if it a @Published property. But I am not sure this is the best practice. Schematic example: class MyModel: ObservableObject { struct TapSubmitTip: Tip { @Parameter static var isSubmitButtonEnabled: Bool = false var title: Text { Text("Tap \"Submit\" to confirm your selection.") } var rules: [Rule] { #Rule(Self.$isSubmitButtonEnabled) { $0 == true } } } let tapSubmitTip = TapSubmitTip() var objectWillChangeCancallable: AnyCancellable! // Used by the view to enable or disable the button var isSubmitButtonEnabled: Bool { // Some logic to determine if button should be enabled. } init() { objectWillChangeCancallable = objectWillChange.sink { [weak self] void in guard let self else { return } if isSubmitButtonEnabled { TapSubmitTip.isSubmitButtonEnabled = true } } } ... // Call objectWillChange or update published properties as needed. ... }
0
0
407
Dec ’24
TipKit #Rule donation work unexpectedly
My feature has rule: var rules: [Rule] { #Rule(Self.didOpenProductDetails) { event in event.donations.count == 0 } } Actual: After first donation is done it suppose to be performed - but after I back to screen the Tip is showing again. Only after second donation the Tip dismisses. Expected: After first donation, even donations count == 1 and Tip won't be presented again. Tested on iOS 18.1
1
0
409
Dec ’24