This commit is contained in:
Alexandre Wilhelm
2015-03-26 10:41:33 -07:00
2 changed files with 45 additions and 1 deletions
+14 -1
View File
@@ -199,7 +199,20 @@ CPSegmentSwitchTrackingMomentary = 2;
- (void)setSelectedSegment:(unsigned)aSegment
{
// setSelected:forSegment throws the exception for us (if necessary)
[self setSelected:YES forSegment:aSegment];
if (_selectedSegment == aSegment)
return;
if (aSegment == -1)
{
var count = [self segmentCount];
while (count--)
[self setSelected:NO forSegment:count];
_selectedSegment = -1;
}
else
[self setSelected:YES forSegment:aSegment];
}
/*!
+31
View File
@@ -61,5 +61,36 @@
[self assert:[_segmentedControl selectedSegment] equals:-1];
}
- (void)testDeselectAll
{
[_segmentedControl setTrackingMode:CPSegmentSwitchTrackingSelectAny];
[_segmentedControl setSegmentCount:2];
[_segmentedControl setSelected:YES forSegment:0];
[_segmentedControl setSelected:YES forSegment:1];
[self assert:[_segmentedControl selectedSegment] equals:1];
[self assertNoThrow:function()
{
[_segmentedControl setSelectedSegment:-1];
}];
[self assert:[_segmentedControl selectedSegment] equals:-1];
[self assertFalse:[_segmentedControl isSelectedForSegment:0]];
[self assertFalse:[_segmentedControl isSelectedForSegment:1]];
}
- (void)testSetSelectedSegmentDoesNotDeselect
{
[_segmentedControl setTrackingMode:CPSegmentSwitchTrackingSelectAny];
[_segmentedControl setSelected:YES forSegment:0];
[_segmentedControl setSelected:YES forSegment:1];
[self assert:[_segmentedControl selectedSegment] equals:1];
[_segmentedControl setSelectedSegment:1];
[self assertTrue:[_segmentedControl isSelectedForSegment:0]];
[self assertTrue:[_segmentedControl isSelectedForSegment:1]];
}
@end