diff --git a/URBSegmentedControl.m b/URBSegmentedControl.m index c455a70..8945c0d 100644 --- a/URBSegmentedControl.m +++ b/URBSegmentedControl.m @@ -118,6 +118,7 @@ - (id)initWithTitles:(NSArray *)titles icons:(NSArray *)icons { } - (id)initWithCoder:(NSCoder *)aDecoder { + _selectedSegmentIndex = -1; self = [super initWithCoder:aDecoder]; if (self) { CGRect nibFrame = self.frame; @@ -317,6 +318,7 @@ - (NSUInteger)numberOfSegments { } - (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment { + [super setEnabled:enabled forSegmentAtIndex:segment]; [self segmentAtIndex:segment].enabled = enabled; } @@ -326,13 +328,14 @@ - (BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment { - (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex { if (_selectedSegmentIndex != selectedSegmentIndex) { - NSParameterAssert(selectedSegmentIndex < (NSInteger)self.items.count && selectedSegmentIndex >= 0); + NSParameterAssert(selectedSegmentIndex < (NSInteger)self.items.count); // deselect current segment if selected if (_selectedSegmentIndex >= 0) ((URBSegmentView *)[self segmentAtIndex:_selectedSegmentIndex]).selected = NO; - [self segmentAtIndex:selectedSegmentIndex].selected = YES; + if (selectedSegmentIndex >= 0) + ((URBSegmentView *)[self segmentAtIndex:selectedSegmentIndex]).selected = YES; _lastSelectedSegmentIndex = _selectedSegmentIndex; _selectedSegmentIndex = selectedSegmentIndex;