How to programmatically add a UISegmentedControl to a container view
this one is perfect I tested.....
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 435)];scroll.contentSize = CGSizeMake(320, 700);scroll.showsHorizontalScrollIndicator = YES;NSArray *itemArray = [NSArray arrayWithObjects: @"One", @"Two", @"Three", nil];UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];segmentedControl.frame = CGRectMake(35, 200, 250, 50);segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;[segmentedControl addTarget:self action:@selector(MySegmentControlAction:) forControlEvents: UIControlEventValueChanged];segmentedControl.selectedSegmentIndex = 1; [scroll addSubview:segmentedControl];[segmentedControl release]; [self.view addSubview:scroll];
Then add your method in your class.
- (void)MySegmentControlAction:(UISegmentedControl *)segment { if(segment.selectedSegmentIndex == 0) { // code for the first button } }
For deprecated UISegmentedControlStyle you can take a look on thisURL.
Try this link:
ADDING A SEGMENTED CONTROL PROGRAMMATICALLY
Updated:
import UIKitclass ViewController: UIViewController { /** Loads the view and in our case we override default loadView to provide custom SegmentedControl. */ override func loadView() { super.loadView() self.view.backgroundColor = UIColor.purpleColor() println("Main view's loadView() called.") // Initialize let items = ["Purple", "Green", "Blue"] let customSC = UISegmentedControl(items: items) customSC.selectedSegmentIndex = 0 // Set up Frame and SegmentedControl let frame = UIScreen.mainScreen().bounds customSC.frame = CGRectMake(frame.minX + 10, frame.minY + 50, frame.width - 20, frame.height*0.1) // Style the Segmented Control customSC.layer.cornerRadius = 5.0 // Don't let background bleed customSC.backgroundColor = UIColor.blackColor() customSC.tintColor = UIColor.whiteColor() // Add target action method customSC.addTarget(self, action: "changeColor:", forControlEvents: .ValueChanged) // Add this custom Segmented Control to our view self.view.addSubview(customSC) } /** Handler for when custom Segmented Control changes and will change the background color of the view depending on the selection. */ func changeColor(sender: UISegmentedControl) { println("Change color handler is called.") print("Changing Color to ") switch sender.selectedSegmentIndex { case 1: self.view.backgroundColor = UIColor.greenColor() println("Green") case 2: self.view.backgroundColor = UIColor.blueColor() println("Blue") default: self.view.backgroundColor = UIColor.purpleColor() println("Purple") } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }}
SOURCE: http://www.richardhsu.me/
U can do like this...
UISegmentedControl *segmentControl = [[UISegmentedControl alloc]initWithItems:@[@"One",@"Two"]];[segmentControl setSegmentedControlStyle:UISegmentedControlStyleBar];segmentControl.frame = CGRectMake(10, 50, 300, 30);[segmentControl addTarget:self action:@selector(segmentedControlValueDidChange:) forControlEvents:UIControlEventValueChanged];[segmentControl setSelectedSegmentIndex:0];[scrollView addSubview:segmentControl];[segmentControl release];
Step 2:
-(void)segmentedControlValueDidChange:(UISegmentedControl *)segment{switch (segment.selectedSegmentIndex) { case 0:{ //action for the first button (Current) break;} case 1:{ //action for the first button (Current) break;} }}