UISegmentedControl get el índice seleccionado anterior

Tengo un UISegmentedControl con un método segmentedValueChanged en él. Necesito averiguar cuál fue el índice seleccionado antes de llamar a este método. ¿Como hacer esto?

Utilice esta function:

@property (nonatomic, assign) NSInteger oldSegmentedIndex; @property (nonatomic, assign) NSInteger actualSegmentedIndex; ....... - (void)viewDidLoad { ....... self.oldSegmentedIndex = -1; self.actualSegmentedIndex = self.segmentedControl.selectedSegmentIndex; ....... } ....... - (IBAction)didSegmentedValueChanged:(id)sender { //Do whatever you want self.oldSegmentedIndex = self.actualSegmentedIndex; self.actualSegmentedIndex = self.segmentedControl.selectedSegmentIndex; } 

La mejor manera es mantener una variable que contenga el último índice seleccionado. Entonces, simplemente comtesting su valor cuando lo necesites

También hay una buena solución con la observación de valores key . Aquí el código para Swift 3 :

 class SegmentedControl: UISegmentedControl { private(set) var previousSelectedSegmentIndex: Int? override func willChangeValue(forKey key: String) { if key == #keyPath(selectedSegmentIndex) { previousSelectedSegmentIndex = selectedSegmentIndex } super.willChangeValue(forKey: key) } }