Posts

Post not yet marked as solved
4 Replies
2.5k Views
var body: some View { let publisher = PassthroughSubject<string, never="">( publisher.sink { (str) in print(str) } return Button("OK") { publisher.send("Test") } }"Test" should be printed in the console when the Button is pressed, but it's not. The event is not send through the publisher.Any idea what happened with PassthroughSubject in Xcode 11 Beta 5 ?
Posted
by sorin36.
Last updated
.
Post not yet marked as solved
2 Replies
7.4k Views
I'm using a ForEach to parse a list of models and create a view for each of them, Each view contains a Button and a Text, the Button toggles a visibility state which should hide the text and change the Button's title (Invisible/Visible).struct ContentView: View { @State var colors: [MyColor] = [MyColor(val: "Blue"), MyColor(val: "Yellow"), MyColor(val: "Red")] var body: some View { ForEach(colors, id: \.uuid) { color in ButtonColorView(color: color.val) } } } struct ButtonColorView: View { var color: String @State var visible = true var body: some View { if visible { return AnyView( HStack { Button("Invisible") { self.visible.toggle() } Text(color) }) } else { return AnyView( Button("Visible") { self.visible.toggle() } ) } } } class MyColor: Identifiable { let uuid = UUID() let val: String init(val: String) { self.val = val } }Unfortunately it's not working, the views inside the ForEach do not change when the Button is pressed. I replaced the Foreach with ButtonColorView(color: colors[0].val) and it seems to work, so I'd say the problem is at ForEach.I also tried breakpoints in ButtonColorView and it seems the view is called when the Button is triggered returning the right view, anyways the view does not update on screen.So, am I using the ForEach in a wrong way ?This problem occurs in a more complex app, but I tried to extract it in this small example.To summarize it: I need ButtonColorView to return different Views depending of its state (visibility in this case)PS: I'm using Xcode 11 Beta 6
Posted
by sorin36.
Last updated
.