Así que os voy a contar como podemos solucionarlo. Se trata de crear un botón oculto que va a ser al que va a apuntar la ventana popover. Y moveremos su posición en función de la celda seleccionada.
Lo primero que haremos es crear el popover segue desde el ViewControler. Le asignaremos un Identifier, por ejemplo cellSegue.
Después añadiriremos a nuestra View un UIButon. Lo podemos colocar en cualquier sitio por qué va a tener su propiedad Hidden marcada, luego va a estar oculto. En el texto del botón voy a poner Anchor, aunque esto nos daría igual.
Y seleccionaremos el botón creado como Anchor del segue.
Ahora crearemos un outlet para el botón, que voy a llamar popOverAnchor:
@property (weak, nonatomic) IBOutlet UIButton *popOverAnchor;
En el @implementation colocaremos su synthesize:
@synthesize popOverAnchor = _popOverAnchor;
Deberemos implementar el método tableView:didSelectRowAtIndexPath: del UITableViewDelegate de esta forma:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Recuperamos la celda que se ha seleccionado
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
//Creamos el CGRect al que va a apuntar el popover en función de la posición de la celda seleccionada
CGRect rect = CGRectMake(tableViewCell.frame.origin.x + tableViewCell.frame.size.width/2, tableViewCell.center.y + tableView.frame.origin.y - tableView.contentOffset.y, 1, 1);
//Movemos el botón a esa posición
self.popOverAnchor.frame = rect;
//Y para terminar llamamos al segue
[self performSegueWithIdentifier:@"cellSegue" sender:tableViewCell];
}
Y ya lo tenemos, como podéis ver, el botón se mueve al centro de la celda seleccionada y al ser el anchor de la ventana popover, conseguimos nuestro proposito.
@Fin
@Fin