0

的選片段呈現UIPopover我需要從UISegmentedControl的選擇的片段是子視圖UIToolBar顯示酥料餅。 這裏是我的代碼:如何從UISegmentedControl

// UISegemntedControl 
NSArray *segments = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 
_segmentedControl = [[UISegmentedControl alloc] initWithItems:segments]; 
_segmentedControl.frame = CGRectMake(self.frame.size.width/2-128, self.frame.size.height/2-12, 256, 24); 
_segmentedControl.selectedSegmentIndex = 0; 
[self addSubview:_segmentedControl]; 

顯示酥料餅:

- (void)show 
{ 
UIView *view = [toolBar.segmentedControl.subviews objectAtIndex:toolBar.segmentedControl.selectedSegmentIndex]; 

// UIPopoverController 
[popover presentPopoverFromRect:view.bounds inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

它的工作原理,但每次酥料餅從錯誤段呈現。我不知道爲什麼......

UPDATE: 解決方案:

float width = toolBar.segmentedControl.frame.size.width/toolBar.segmentedControl.subviews.count; 
CGRect bounds = CGRectMake(toolBar.segmentedControl.frame.origin.x+width*toolBar.segmentedControl.selectedSegmentIndex, toolBar.segmentedControl.frame.origin.y, width, toolBat.segmentedControl.frame.size.height); 
... 
[popover presentPopoverFromRect:bounds inView:toolBar permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

回答

1

如果這些段是平等的,你可以通過選擇段的數量劃分控制的寬度。

if ((UISegmentedControl*)sender.selectedSegmentIndex == 0) 
     [self.popover presentPopoverFromRect:CGRectMake(self.segmentedControl.frame.size.width/3, self.segmentedControl.frame.origin.y, aWidth, aHeight)]; 

用於參考看一看 Get frame from certain UISegmentedControl index

+0

這是溶液。謝謝。 – joycoma