From 83a288fd580e2a0f60e60b687e5195102e10ddcf Mon Sep 17 00:00:00 2001 From: Koji Hasegawa Date: Sun, 3 Mar 2013 15:27:28 +0900 Subject: [PATCH 1/2] fix issue: cannot deselect index (when call [setSelectedSegmentIndex:-1]) and fix issue when init from nib. at [initWithCoder:] --- URBSegmentedControl.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/URBSegmentedControl.m b/URBSegmentedControl.m index c455a70..7222601 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; @@ -326,13 +327,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; From e96079d110706342ec9c62d0fa82bc87a5887d27 Mon Sep 17 00:00:00 2001 From: Koji Hasegawa Date: Sat, 9 Mar 2013 11:59:33 +0900 Subject: [PATCH 2/2] fix illegally value-changed event, when tap disabled segment --- URBSegmentedControl.m | 1 + 1 file changed, 1 insertion(+) diff --git a/URBSegmentedControl.m b/URBSegmentedControl.m index 7222601..8945c0d 100644 --- a/URBSegmentedControl.m +++ b/URBSegmentedControl.m @@ -318,6 +318,7 @@ - (NSUInteger)numberOfSegments { } - (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment { + [super setEnabled:enabled forSegmentAtIndex:segment]; [self segmentAtIndex:segment].enabled = enabled; }