iPad popover - Как вы указываете на один сегмент в сегментарном элементе управления? - PullRequest
2 голосов
/ 17 марта 2012

У меня есть iPad-поповер, и я хотел бы представить (указать) один сегмент в сегментированном элементе управления.Приведенный ниже код работает нормально, за исключением того, что указатель указывает на середину сегментированного элемента управления - я бы предпочел, чтобы он указывал на правильный сегмент.то есть сегмент 0 или сегмент 1.

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

Большое спасибо.

Ответы [ 3 ]

5 голосов
/ 14 февраля 2013

Код ниже может быть полезен для указания всплывающего окна на выбранную вкладку в сегментном контроле.

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];
0 голосов
/ 03 декабря 2016

Обновлено для 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
0 голосов
/ 17 марта 2012

Попробуйте что-то вроде этого (замените требуемыйSegmentIndex индексом сегмента, на который должна указывать стрелка):

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

Я не проверял это, но оно (или что-то очень похожее) должно работать.

...