I truly enjoyed your article and code. Thanks!!!
In struct PizzaNamePickerRow
// The following binding is not needed.
@Binding var selectedPizzaName: PizzaName
// Instead, as the value is not mutated, it can be a simple property.
let selectedPizzaName: PizzaName
The PizzaNamePickerRow view is the label for the Button in PizzaNamePicker. The original code uses the $selectedPizzaName for the binding:
Button(action: { self.selectedPizzaName = pizzaName }) { PizzaNamePickerRow(selectedPizzaName: self.$selectedPizzaName, pizzaName: pizzaName) }
Instead, it should simply use the property value:
Button(action: { self.selectedPizzaName = pizzaName }) { PizzaNamePickerRow(selectedPizzaName: self.selectedPizzaName, pizzaName: pizzaName) }
However, that the actual binding is needed because the button action mutates the value.
@Binding var selectedPizzaName: PizzaName
... and ...
Button(action: { self.selectedPizzaName = pizzaName })