Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从UISegmentedControl的选定段显示UIPover_Objective C_Uiview_Uikit_Uipopovercontroller_Uisegmentedcontrol - Fatal编程技术网

Objective c 如何从UISegmentedControl的选定段显示UIPover

Objective c 如何从UISegmentedControl的选定段显示UIPover,objective-c,uiview,uikit,uipopovercontroller,uisegmentedcontrol,Objective C,Uiview,Uikit,Uipopovercontroller,Uisegmentedcontrol,我需要从UISegmentedControl的选定段显示popover,它是UIToolBar的子视图。 这是我的密码: // UISegemntedControl NSArray *segments = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; _segmentedControl = [[UISegmentedControl alloc] initWithItems:segments]; _segmentedContro

我需要从UISegmentedControl的选定段显示popover,它是UIToolBar的子视图。 这是我的密码:

// 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];
}
它可以工作,但每次popover从错误的片段出现时。我不知道为什么

更新: 解决方案:

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

如果线段相等,则可以将控件的宽度除以选定线段的编号

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

这是一种解决方案。非常感谢。