0

의 선택된 세그먼트에서 UIPopover을 제시 어떻게 UIToolBar 서브 뷰 이다 의 선택된 세그먼트 UISegmentedControl에서 팝 오버를 표시해야합니다.은 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