iPad popover – 你如何指向分段控制中的一个细分市场?

我有一个iPadpopup窗口,并想呈现(点)到一个分段控制段。 下面的代码工作正常,除了指针指向分段控制的中间 – 我宁愿它指向正确的段。 即分段0或分段1。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [printController presentFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES completionHandler:completionHandler];// iPad } 

非常感谢。

下面的代码可能有助于将popup窗口指向段控件中的选定选项卡。

 CGRect frame = [segmentControl frame]; frame =CGRectMake((frame.size.width/No. of segments * [segmentControl selectedSegmentIndex]), 0, frame.size.width/No. of segments, segmentControl.bounds.size.height); [m_PopOver presentPopoverFromRect:frame inView:segmentControl permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

尝试像这样(用箭头应指向的段的索引replacedesiredSegmentIndex):

 CGFloat desiredOffset = 0; for (NSUInteger segmentIndex = 0; segmentIndex < desiredSegmentIndex; segmentIndex ++) desiredOffset += [segmentedControl widthForSegmentAtIndex:segmentIndex]; [printController presentFromRect:CGRectMake(desiredOffset, 0, [segmentedControl widthForSegmentAtIndex:desiredSegmentIndex], segmentedControl.bounds.size.height); inView:segmentedControl animated:YES completionHandler:completionHandler]; 

我没有testing过这个,但它(或类似的东西)应该工作。

更新了Swift 3.0

 var frame = segmentedControl.frame frame = CGRect(x: frame.size.width/CGFloat(segmentedControl.numberOfSegments) * CGFloat(segmentedControl.selectedSegmentIndex), y: 0, width: frame.size.width/CGFloat(segmentedControl.numberOfSegments), height: segmentedControl.bounds.size.height) popoverController?.sourceRect = frame