2013-02-13 102 views
0

我从来没有添加一个分段控制到底部工具栏没有界面生成器。我在导航控制工具栏中添加了相同的分段控件,但没有此问题。我究竟做错了什么?谢谢。UIToolbar与异常脂肪UISegmentedControl

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]; 

回答

3

不幸试试这个..

//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]; 
+1

这工作。谢谢。我是否错过了某些东西,或者只有一条线对我造成这种麻烦? '// this one'' '[self.segCon setFrame:[self.navigationController.toolbar bounds]];' 它是有道理的,它会将分段控件拉伸到工具栏的高度,即设置self.segCon导航到工具栏的边界。每个索引的“setWidth:85.0”都塞进左边。 – Airuop 2013-02-14 03:25:18

+1

你是对的!只是一条线.. – chuthan20 2013-02-14 04:57:56

0

尝试设置分段控制的框架...

CGRect r = self.segmentedCon.frame; 

self.segmentedCon.frame = CGRectMake(r.origin.x, r.origin.y, r.size.width, 30); 
+0

相同的结果。 – Airuop 2013-02-13 04:54:21