En mi caso, he agregado programáticamente varios UIBarButtonItem. El problema de usar solo una vista invisible como un archor es que, si como en mi caso, el tamaño del UIBarButtonItem está cambiando su tamaño, la flecha del popover no aparece centrada, y aunque funciona, se ve un poco extraño.
Cómo solucionarlo.
Crea una pequeña vista en el guión gráfico (el tamaño no importa), hazlo invisible y vincúlalo. En mi caso, esto se denomina invisibleViewAsArchor
Conecte el elemento UIBarbutton con la siguiente acción.
-(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];
}
}
como se puede ver antes de que aparezca el popover (con performSegueWithIdentifier), voy a cambiar el marco de la archor con los valores de la tecla que se ha disparado el evento.
Espero que ayude.
Hola @GUiLTY, así que estoy teniendo el mismo problema . ¿Me preguntaba si el "invisibleViewAsArchor" es una clase que necesito hacer para esa vista? – gdubs
Hola @gdubs "invisibleViewAsAnchor" es una vista estándar y el interior - (void) {viewDidLoad \t // después de su código ... \t self.invisibleViewAsArchor.hidden = TRUE; } – MiQUEL
Optimización pequeña (pequeña): no necesita el "retorno" allí :) – narco