2013-02-13 2 views
0

Я никогда не добавлял сегментированный элемент управления к нижней панели инструментов без интерфейса Builder. Я не добавил этот же сегментированный элемент управления к панели управления навигацией без этой проблемы. Что я делаю не так? Спасибо.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

+1

Вы правы! просто tht одна строка .. – chuthan20

0

Попробуйте установить рамку сегментированной управления ...

CGRect r = self.segmentedCon.frame; 

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

же результат, к сожалению. – Airuop

Смежные вопросы