UISegmentedControl deselect (make none of the segments selected)

I guess you try to create a momentary selection in segmented control. In interface builder set the segmentedcontrol to momentary. Or in code you can do:

menu.momentary = YES;

Setting the segmentedControl to .momentary = YES changes the way the user can interact with the segmentedControl. If you want to have nothing selected initially when the page loads but have segmentedControl behave the same after a selection is made by the user then you will want something more like this:

Swift 4 solution:

 @IBOutlet weak var segmentedControl: UISegmentedControl!

 self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment

Swift 5.1:

 self.segmentedControl.selectedSegmentIndex = UISegmentedControl.noSegment

The right way to do this is:

[menu setSelectedSegmentIndex:UISegmentedControlNoSegment];

Edit:

Swift 5:

menu.selectedSegmentIndex = UISegmentedControl.noSegment