В моем случае я программно добавил несколько UIBarButtonItem.
Проблема использования только невидимого представления в качестве архора заключается в том, что, если, как и в моем случае, размер UIBarButtonItem меняет свой размер, стрелка всплывающего окна не отображается по центру, и хотя это работает, выглядит немного странно. 1001 *
Как это решить.
Создайте небольшое представление в раскадровке (размер на самом деле не имеет значения), сделайте его невидимым и свяжите его.
В моем случае это называется invisibleViewAsArchor
Соедините элемент UIBarbutton с помощью следующего действия.
-(IBAction) showMyPopover:(id)sender {
if([self.popoverController isPopoverVisible])
{
[self.popoverController dismissPopoverAnimated:YES];
}else{
self.invisibleViewAsArchor.frame = CGRectMake([sender view].frame.origin.x,
[sender view].frame.origin.y-50,
[sender view].frame.size.width,
[sender view].frame.size.height);
[self performSegueWithIdentifier:@"segue_to_something" sender:self];
}
}
как вы можете видеть перед тем, как отобразится всплывающее окно (с executeSegueWithIdentifier), я меняю кадр
Archor со значениями от кнопки, которая запустила событие.
Надеюсь, это поможет.