A 
segmented control is a UI Component that display a series of buttons that are stuck to each other and displayed horizontally. You can relate this to a group of radio buttons on a HTML form where the user can make a choice. In this example we will learn the following
- Create and initialize a UISegmentControl from an array list of Items
 
- Set style for the segmented control
 
- Default a specific segment as selected
 
- Remove a segment from the control
 
- Add a new segment to the control
 
- Attach a target action to the control to capture the selection made by the user
 
- You can make the control work like a UIButton that pops back up by setting the momentary property to TRUE
 
Interface file for the view controller - MySegmentedButtonViewController.h
#import <UIKit/UIKit.h>
@interface MySegmentedButtonViewController : UIViewController
@property (nonatomic, strong) UISegmentedControl *mySegmentedControl;
@end
Implementation file for the view controller - MySegmentedButtonViewController.m
#import "MySegmentedButtonViewController.h"
@interface MySegmentedButtonViewController ()
@end
@implementation MySegmentedButtonViewController
@synthesize mySegmentedControl;
- (void)viewDidLoad
{
    [super viewDidLoad];
 // Do any additional setup after loading the view, typically from a nib.
    
    //set the view background to white
    self.view.backgroundColor = [UIColor whiteColor];
    
    //frame for the segemented button
    CGRect myFrame = CGRectMake(10.0f, 10.0f, 300.0f, 40.0f);
    
    //Array of items to go inside the segment control
    //You can choose to add an UIImage as one of the items instead of NSString
    NSArray *mySegments = [[NSArray alloc] initWithObjects: @"Red",
                         @"Blue", @"Green", @"Yellow", nil];
    
    //create an intialize our segmented control
    self.mySegmentedControl = [[UISegmentedControl alloc] initWithItems:mySegments];
    
    //set the size and placement
    self.mySegmentedControl.frame = myFrame;
    
    //set the style for the segmented control
    self.mySegmentedControl.segmentedControlStyle  = UISegmentedControlStyleBar;
    
    //remove the third index from the control
    [self.mySegmentedControl removeSegmentAtIndex:2
                                         animated:true];
    
    //add another control at the end
    [self.mySegmentedControl insertSegmentWithTitle:@"Brown"
                                        atIndex:3
                                        animated:true];
    
    //default the selection to second item
    [self.mySegmentedControl setSelectedSegmentIndex:1];
    
    //attach target action for if the selection is changed by the user
    [self.mySegmentedControl addTarget:self
                                action:@selector(whichColor:)
                                forControlEvents:UIControlEventValueChanged];
    
    //add the control to the view
    [self.view addSubview:self.mySegmentedControl];
    
}
- (void) whichColor:(UISegmentedControl *)paramSender{
    
    //check if its the same control that triggered the change event
    if ([paramSender isEqual:self.mySegmentedControl]){
    
        //get index position for the selected control
        NSInteger selectedIndex = [paramSender selectedSegmentIndex];
        
        //get the Text for the segmented control that was selected
        NSString *myChoice =
                    [paramSender titleForSegmentAtIndex:selectedIndex];
        //let log this info to the console
        NSLog(@"Segment at position %i with %@ text is selected",
              selectedIndex, myChoice);
    }
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
Reference
 
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.