Skip to content

Commit ff3dced

Browse files
Merge pull request #1 from rbarbera/master
Removed DNSCastroSegmentedControlDelegate, used UIControl's target/actio...
2 parents cd2d6ca + 5156a70 commit ff3dced

File tree

5 files changed

+61
-52
lines changed

5 files changed

+61
-52
lines changed

DNSCastroSegmentedControl.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@
358358
buildSettings = {
359359
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
360360
INFOPLIST_FILE = DNSCastroSegmentedControl/Info.plist;
361+
IPHONEOS_DEPLOYMENT_TARGET = 8.1;
361362
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
362363
PRODUCT_NAME = "$(TARGET_NAME)";
363364
};
@@ -368,6 +369,7 @@
368369
buildSettings = {
369370
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
370371
INFOPLIST_FILE = DNSCastroSegmentedControl/Info.plist;
372+
IPHONEOS_DEPLOYMENT_TARGET = 8.1;
371373
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
372374
PRODUCT_NAME = "$(TARGET_NAME)";
373375
};
@@ -426,6 +428,7 @@
426428
9B7821BA19DF9D8700C340C7 /* Release */,
427429
);
428430
defaultConfigurationIsVisible = 0;
431+
defaultConfigurationName = Release;
429432
};
430433
9B7821BB19DF9D8700C340C7 /* Build configuration list for PBXNativeTarget "DNSCastroSegmentedControlTests" */ = {
431434
isa = XCConfigurationList;
@@ -434,6 +437,7 @@
434437
9B7821BD19DF9D8700C340C7 /* Release */,
435438
);
436439
defaultConfigurationIsVisible = 0;
440+
defaultConfigurationName = Release;
437441
};
438442
/* End XCConfigurationList section */
439443
};

DNSCastroSegmentedControl/Base.lproj/Main.storyboard

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="14A389" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="14A389" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
33
<dependencies>
44
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
55
</dependencies>
@@ -13,32 +13,44 @@
1313
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
1414
</layoutGuides>
1515
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
16-
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
16+
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
1717
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
1818
<subviews>
1919
<view contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="40" translatesAutoresizingMaskIntoConstraints="NO" id="ovI-wb-jw2" customClass="DNSCastroSegmentedControl">
20-
<rect key="frame" x="40" y="60" width="520" height="40"/>
20+
<rect key="frame" x="40" y="88" width="240" height="40"/>
2121
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
2222
<connections>
23-
<outlet property="delegate" destination="vXZ-lx-hvc" id="uLO-Ln-NWy"/>
23+
<action selector="DNSCastroSegmentedControlChanged:" destination="vXZ-lx-hvc" eventType="valueChanged" id="SlJ-uE-ST3"/>
2424
</connections>
2525
</view>
2626
<view contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="40" translatesAutoresizingMaskIntoConstraints="NO" id="XHm-9W-22v" customClass="DNSCastroSegmentedControl">
27-
<rect key="frame" x="40" y="140" width="520" height="40"/>
27+
<rect key="frame" x="40" y="168" width="240" height="40"/>
2828
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
2929
<connections>
30-
<outlet property="delegate" destination="vXZ-lx-hvc" id="rMu-Sy-bOM"/>
30+
<action selector="DNSCastroSegmentedControlChanged:" destination="vXZ-lx-hvc" eventType="valueChanged" id="hWS-qZ-oIb"/>
3131
</connections>
3232
</view>
33+
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="27t-dN-biq">
34+
<rect key="frame" x="99" y="20" width="123" height="29"/>
35+
<segments>
36+
<segment title="First"/>
37+
<segment title="Second"/>
38+
</segments>
39+
<connections>
40+
<action selector="standardSegmentedControlChanged:" destination="vXZ-lx-hvc" eventType="valueChanged" id="P42-v8-a9c"/>
41+
</connections>
42+
</segmentedControl>
3343
</subviews>
3444
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
3545
<constraints>
3646
<constraint firstAttribute="trailing" secondItem="XHm-9W-22v" secondAttribute="trailing" constant="40" id="4le-Ud-K0s"/>
3747
<constraint firstAttribute="trailing" secondItem="ovI-wb-jw2" secondAttribute="trailing" constant="40" id="9Wu-6r-EUg"/>
38-
<constraint firstItem="ovI-wb-jw2" firstAttribute="top" secondItem="jyV-Pf-zRb" secondAttribute="bottom" constant="40" id="EJz-hh-gN4"/>
3948
<constraint firstItem="ovI-wb-jw2" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" constant="40" id="Ks2-ZK-gsx"/>
49+
<constraint firstItem="27t-dN-biq" firstAttribute="top" secondItem="jyV-Pf-zRb" secondAttribute="bottom" id="aLq-dN-WFv"/>
4050
<constraint firstItem="XHm-9W-22v" firstAttribute="top" secondItem="ovI-wb-jw2" secondAttribute="bottom" constant="40" id="f3C-fx-OzS"/>
51+
<constraint firstItem="ovI-wb-jw2" firstAttribute="top" secondItem="27t-dN-biq" secondAttribute="bottom" constant="40" id="hZ5-LF-bmt"/>
4152
<constraint firstItem="XHm-9W-22v" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" constant="40" id="izC-OW-Q5Y"/>
53+
<constraint firstAttribute="centerX" secondItem="27t-dN-biq" secondAttribute="centerX" id="yoP-dt-XcW"/>
4254
</constraints>
4355
</view>
4456
<connections>
@@ -51,4 +63,9 @@
5163
<point key="canvasLocation" x="596" y="162"/>
5264
</scene>
5365
</scenes>
66+
<simulatedMetricsContainer key="defaultSimulatedMetrics">
67+
<simulatedStatusBarMetrics key="statusBar"/>
68+
<simulatedOrientationMetrics key="orientation"/>
69+
<simulatedScreenMetrics key="destination"/>
70+
</simulatedMetricsContainer>
5471
</document>

DNSCastroSegmentedControl/Library/DNSCastroSegmentedControl.h

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,13 @@
1010

1111
@class DNSCastroSegmentedControl;
1212

13-
@protocol DNSCastroSegmentedControlDelegate <NSObject>
14-
@required
15-
/**
16-
* Fires when the selection index of the control changes.
17-
*
18-
* @param control The control which has changed.
19-
* @param selectedIndex The newly selected index;
20-
*/
21-
- (void)segmentedControl:(DNSCastroSegmentedControl *)control didChangeToSelectedIndex:(NSInteger)selectedIndex;
22-
23-
@end
24-
2513
@interface DNSCastroSegmentedControl : UIControl
2614

27-
///A delegate to notify of any choice changes.
28-
@property (nonatomic, weak) IBOutlet id<DNSCastroSegmentedControlDelegate> delegate;
29-
3015
///An array of the choices for the user. Should be NSString/AttributedString or UIImage.
3116
@property (nonatomic) NSArray *choices;
3217

3318
///The current selected index. Zero-indexed.
34-
@property (nonatomic) NSInteger selectedIndex;
19+
@property (nonatomic) NSInteger selectedSegmentIndex;
3520

3621
///Will set a font to be used for all labels. If nil, the default system font will be used.
3722
@property (nonatomic) UIFont *labelFont;
@@ -48,6 +33,6 @@
4833
* @param selectedIndex The index you wish to switch the control to
4934
* @param animated YES if you want this transition to be animated, NO if not.
5035
*/
51-
- (void)setSelectedIndex:(NSInteger)selectedIndex animated:(BOOL)animated;
36+
- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex animated:(BOOL)animated;
5237

5338
@end

DNSCastroSegmentedControl/Library/DNSCastroSegmentedControl.m

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ - (void)layoutSubviews
4040
[self setupSectionViews];
4141
[self setupSelectionView];
4242
[self roundAllTheThings];
43-
[self setSelectedIndex:self.selectedIndex animated:NO];
43+
[self setSelectedSegmentIndex:self.selectedSegmentIndex animated:NO];
4444
}
4545
}
4646

@@ -334,11 +334,11 @@ - (void)setSelectionViewColor:(UIColor *)selectionViewColor
334334
}
335335
}
336336

337-
- (void)setSelectedIndex:(NSInteger)selectedIndex
337+
- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex
338338
{
339-
if (_selectedIndex != selectedIndex) {
340-
_selectedIndex = selectedIndex;
341-
[self.delegate segmentedControl:self didChangeToSelectedIndex:selectedIndex];
339+
if (_selectedSegmentIndex != selectedSegmentIndex) {
340+
_selectedSegmentIndex = selectedSegmentIndex;
341+
[self sendActionsForControlEvents:UIControlEventValueChanged];
342342
}
343343
}
344344

@@ -383,8 +383,8 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
383383
//Figure out where we're at.
384384
CGFloat section = self.initialTouchPoint.x / [self pointsPerSection];
385385
NSInteger roundedSection = floorf(section);
386-
if (self.selectedIndex != roundedSection) {
387-
[self setSelectedIndex:roundedSection animated:YES];
386+
if (self.selectedSegmentIndex != roundedSection) {
387+
[self setSelectedSegmentIndex:roundedSection animated:YES];
388388
[UIView animateWithDuration:AnimationDuration
389389
delay:0
390390
options:UIViewAnimationOptionCurveEaseOut
@@ -425,7 +425,7 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
425425
CGFloat section = constantVSMax / [self pointsPerSection];
426426
NSInteger roundedSection = roundf(section);
427427

428-
[self setSelectedIndex:roundedSection animated:YES];
428+
[self setSelectedSegmentIndex:roundedSection animated:YES];
429429
}
430430

431431
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
@@ -458,7 +458,7 @@ - (void)touchesEndedOrCancelled
458458

459459
- (void)snapToCurrentSection:(BOOL)isEmbiggened;
460460
{
461-
CGFloat fullMove = self.selectedIndex * [self pointsPerSection];
461+
CGFloat fullMove = self.selectedSegmentIndex * [self pointsPerSection];
462462

463463
if (!isEmbiggened) {
464464
fullMove += SelectionViewPadding;
@@ -468,14 +468,14 @@ - (void)snapToCurrentSection:(BOOL)isEmbiggened;
468468
[self layoutIfNeeded];
469469
}
470470

471-
- (void)setSelectedIndex:(NSInteger)selectedIndex animated:(BOOL)animated
471+
- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex animated:(BOOL)animated
472472
{
473-
NSInteger previousSelectedIndex = _selectedIndex;
473+
NSInteger previousSelectedSegmentIndex = _selectedSegmentIndex;
474474
if (!animated) {
475-
self.selectedIndex = selectedIndex;
475+
self.selectedSegmentIndex = selectedSegmentIndex;
476476
for (NSInteger i = 0; i < self.sectionViews.count; i++) {
477477
UIView *currentView = self.sectionViews[i];
478-
if (i == selectedIndex) {
478+
if (i == selectedSegmentIndex) {
479479
currentView.alpha = SelectedAlpha;
480480
} else {
481481
currentView.alpha = DeselectedAlpha;
@@ -486,10 +486,10 @@ - (void)setSelectedIndex:(NSInteger)selectedIndex animated:(BOOL)animated
486486
return;
487487
} //else, animate!
488488

489-
if (self.selectedIndex != selectedIndex) {
490-
self.selectedIndex = selectedIndex;
491-
UIView *wasHighlighted = self.sectionViews[previousSelectedIndex];
492-
UIView *nowHighlighted = self.sectionViews[selectedIndex];
489+
if (self.selectedSegmentIndex != selectedSegmentIndex) {
490+
self.selectedSegmentIndex = selectedSegmentIndex;
491+
UIView *wasHighlighted = self.sectionViews[previousSelectedSegmentIndex];
492+
UIView *nowHighlighted = self.sectionViews[selectedSegmentIndex];
493493
[UIView animateWithDuration:AnimationDuration
494494
delay:0
495495
options:UIViewAnimationOptionCurveLinear //Crossfade

DNSCastroSegmentedControl/ViewController.m

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#import "DNSCastroSegmentedControl.h"
1212

13-
@interface ViewController () <DNSCastroSegmentedControlDelegate>
13+
@interface ViewController ()
1414
@property (nonatomic, weak) IBOutlet DNSCastroSegmentedControl *segmentedControl;
1515
@property (nonatomic, weak) IBOutlet DNSCastroSegmentedControl *stairsSegmentedControl;
1616
@property (nonatomic) DNSCastroSegmentedControl *programmaticSegmentedControl;
@@ -25,7 +25,7 @@ - (void)viewDidLoad
2525

2626
self.segmentedControl.choices = @[@"one", @"two", @"three", @"four"];
2727
self.segmentedControl.labelFont = [UIFont fontWithName:@"AmericanTypewriter" size:17];
28-
self.segmentedControl.selectedIndex = 2;
28+
self.segmentedControl.selectedSegmentIndex = 2;
2929
self.segmentedControl.tintColor = [UIColor orangeColor];
3030
self.segmentedControl.choiceColor = [UIColor whiteColor];
3131
self.segmentedControl.selectionViewColor = [UIColor greenColor];
@@ -50,7 +50,6 @@ - (void)viewDidLayoutSubviews
5050
self.programmaticSegmentedControl = [[DNSCastroSegmentedControl alloc] init];
5151
self.programmaticSegmentedControl.translatesAutoresizingMaskIntoConstraints = NO;
5252
self.programmaticSegmentedControl.backgroundColor = self.stairsSegmentedControl.backgroundColor;
53-
self.programmaticSegmentedControl.delegate = self;
5453
[self.view addSubview:self.programmaticSegmentedControl];
5554

5655
//Pin to bottom of the stairs SC
@@ -83,7 +82,9 @@ - (void)viewDidLayoutSubviews
8382
self.programmaticSegmentedControl.choices = @[@"Programmatic", @"Springs/Struts", @"Autolayout"];
8483
self.programmaticSegmentedControl.labelFont = [UIFont fontWithName:@"AppleSDGothicNeo-Medium" size:14];
8584
self.programmaticSegmentedControl.choiceColor = [UIColor orangeColor];
86-
self.programmaticSegmentedControl.selectedIndex = 1;
85+
self.programmaticSegmentedControl.selectedSegmentIndex = 1;
86+
87+
[self.programmaticSegmentedControl addTarget:self action:@selector(DNSCastroSegmentedControlChanged:) forControlEvents:UIControlEventValueChanged];
8788

8889
//Uncomment to move automatically after a delay
8990
// [self performSelector:@selector(setProgrammaticIndex)
@@ -94,23 +95,25 @@ - (void)viewDidLayoutSubviews
9495

9596
- (void)setProgrammaticIndex
9697
{
97-
[self.programmaticSegmentedControl setSelectedIndex:2 animated:YES];
98+
[self.programmaticSegmentedControl setSelectedSegmentIndex:2 animated:YES];
9899
}
99100

100-
#pragma mark - DNSCastroSegmentedControlDelegate
101+
- (IBAction)standardSegmentedControlChanged:(UISegmentedControl *)sender {
102+
NSLog(@"%s Standard segmented control change to index %@",__PRETTY_FUNCTION__,@(sender.selectedSegmentIndex));
103+
}
101104

102-
- (void)segmentedControl:(DNSCastroSegmentedControl *)control didChangeToSelectedIndex:(NSInteger)selectedIndex
105+
- (IBAction)DNSCastroSegmentedControlChanged:(DNSCastroSegmentedControl *)sender
103106
{
104107
NSString *controlName = nil;
105-
if (control == self.segmentedControl) {
108+
if (sender == self.segmentedControl) {
106109
controlName = @"First Segmented Control";
107-
} else if (control == self.stairsSegmentedControl) {
110+
} else if (sender == self.stairsSegmentedControl) {
108111
controlName = @"Stairs Segmented Control";
109-
} else if (control == self.programmaticSegmentedControl) {
112+
} else if (sender == self.programmaticSegmentedControl) {
110113
controlName = @"Programmatic Segmented Control";
111114
}
112115

113-
NSLog(@"Control %@ change to index %@", controlName, @(selectedIndex));
116+
NSLog(@"Control %@ change to index %@", controlName, @(sender.selectedSegmentIndex));
114117
}
115118

116119
@end

0 commit comments

Comments
 (0)