Vamos a ver una forma de colocar el
Anchor de un
Segue de tipo
Popover apuntando a una celda de una tabla dinámica. En el
storyboard lo que tenemos es un prototipo de la celda, por lo que que si intentamos
cablear el segue hacia ella, nos va a dar un error.
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