Подтвердить что ты не робот

Проблема с UIPopoverController presentPopoverFromRect

Я пытаюсь представить UIPopoverController при щелчке UIButton. Здесь мой код:

- (IBAction)showColumnChooser:(id)sender {

    ColumnChooserTVC *vc = [[ColumnChooserTVC alloc] init];

    [vc setSelections:allColumns];
    [vc setDelegate:self];
    UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:vc];


    [pc presentPopoverFromRect:[sender frame] inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionAny 
                      animated:YES];
    [vc release];
}

С направлением стрелки, как "Any", он полностью затушевывает кнопку, вот что она выглядит: enter image description here

Если я сделаю направление "Правильно", это немного лучше, но все же есть какая-то комната между popover и кнопкой, и это не кажется правильным. enter image description here Я не хочу делать какие-то "трюки" или "хаки" и использовать CGRect на основе проб/ошибок, я хочу знать, что это за правильный способ? Спасибо.

Здесь кнопка в построителе интерфейса по просьбе Neckto: enter image description here

4b9b3361

Ответ 1

Я думаю, вы смешиваете системы координат. На каждом уровне вашего взгляда-источника, происхождение перемещается. Таким образом, расположение [sender frame] в self.view не находится там, где находится кнопка.

Try:

[pc presentPopoverFromRect:[sender bounds]
                    inView:sender
  permittedArrowDirections:UIPopoverArrowDirectionAny 
                  animated:YES];

Ответ 2

И Swift, Swift, Swift, конечно!

pc.presentPopoverFromRect(sender.bounds, inView: sender, 
permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)