В моем случае я добавил программно несколько UIBarButtonItem. Проблема использования невидимого представления в качестве архитора заключается в том, что, как и в моем случае, размер UIBarButtonItem меняет его размер, стрелка popover не отображается по центру, и хотя это работает, выглядит немного странно.
Как это решить.
Создайте небольшой снимок в раскадровке (размер не имеет значения), сделать его невидимым и связать его. В моем случае это называется 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];
}
}
, как вы можете увидеть, прежде чем он показывает поповер (с performSegueWithIdentifier), я меняю кадр в Archor со значениями от кнопки, которая обожженное событие.
Надеюсь, это поможет.
Привет @GUiLTY, поэтому у меня такая же проблема , Интересно, нужно ли для этого представления «invisibleViewAsArchor» класс, который мне нужен? – gdubs
Привет @gdubs "invisibleViewAsAnchor" стандартный вид и внутри - (ничтожной) viewDidLoad { \t // после кода ... \t self.invisibleViewAsArchor.скрытый = TRUE; } – MiQUEL
Небольшая (крошечная) оптимизация: вам не нужен «возврат» там :) – narco