0

I've never added a segmented control to a bottom toolbar without Interface Builder. I added the same segmented control to the navigation control toolbar without this issue. What am I doing wrong? Thank you.

a screenshot of what im getting

//enable UIToolbar
self.navigationController.toolbarHidden = NO;

//UISegmentedControl
NSArray *segmentedControlItems = [[NSArray alloc] initWithObjects:@"Day One",@"Day Two",nil];
self.segmentedCon = [[UISegmentedControl alloc] initWithItems:segmentedControlItems];
[segmentedControlItems release];
[self.segmentedCon addTarget:self action:@selector(daySegConIndexChange) forControlEvents:UIControlEventValueChanged];
[self.segmentedCon setSelectedSegmentIndex:0];
[self.segmentedCon setSegmentedControlStyle:UISegmentedControlStyleBar];
[self.segmentedCon setWidth:85.0 forSegmentAtIndex:0];
[self.segmentedCon setWidth:85.0 forSegmentAtIndex:1];
[self.segmentedCon setFrame:[self.navigationController.toolbar bounds]];

//bar button items
UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *segBarBtn = [[UIBarButtonItem alloc] initWithCustomView:self.segmentedCon];

//nsarray of tool bar items
NSArray *toolbarItems = [NSArray arrayWithObjects:flexibaleSpaceBarButton,segBarBtn,flexibaleSpaceBarButton,nil];
[self setToolbarItems:toolbarItems animated:YES];
[segBarBtn release];
Pouria Almassi
  • 1,580
  • 2
  • 17
  • 26

2 Answers2

3

Try this instead..

//UISegmentedControl
NSArray *segmentedControlItems = [[NSArray alloc] initWithObjects:@"Day One",@"Day Two",nil];
self.segmentedCon = [[UISegmentedControl alloc] initWithItems:segmentedControlItems];
[segmentedControlItems release];
[self.segmentedCon addTarget:self action:@selector(daySegConIndexChange) forControlEvents:UIControlEventValueChanged];
[self.segmentedCon setSelectedSegmentIndex:0];
[self.segmentedCon setSegmentedControlStyle:UISegmentedControlStyleBar];

//bar button items
UIBarButtonItem *flexibaleSpaceBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *segBarBtn = [[UIBarButtonItem alloc] initWithCustomView:self.segmentedCon];
chuthan20
  • 5,389
  • 1
  • 17
  • 21
  • 1
    This works. Thank you. Am I missing something or did just one line cause this trouble for me? `//this one` `[self.segCon setFrame:[self.navigationController.toolbar bounds]];` It makes sense that this would stretch the segmented control to the height of the toolbar, ie, set the frame of self.segCon to the navigation toolbar's bounds. 'setWidth:85.0' for each index crammed it into the left hand side. – Pouria Almassi Feb 14 '13 at 03:25
0

Try setting the frame of the segmented control...

CGRect r = self.segmentedCon.frame;

self.segmentedCon.frame = CGRectMake(r.origin.x, r.origin.y, r.size.width, 30);
chuthan20
  • 5,389
  • 1
  • 17
  • 21