Vous disposez d'un bouton dans une cellule de vue de table et vous souhaitez afficher un survol orienté vers cette cellule lorsque le bouton est enfoncé.
D'abord, ajouter le bouton à la cellule cellForRowAtIndexPath en utilisant quelque chose comme ceci:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 0, 100, 30)];
[button setTitle:@"Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(profileUser:)
forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
(ne doit pas être rect arrondi) Un point important est que ci-dessus dans le @selector, il y a deux points après profileUser (ceci indique au bouton d'envoyer une référence à lui-même en tant que premier paramètre à profileUser). Cette référence peut être utilisée pour déterminer quelle cellule a été sélectionnée.
La ProfilForumsVidéosInterviewsPodcastNewsletterAnciens: méthode doit être quelque chose comme ceci:
-(void)profileUser:(UIButton *)button
{
UITableViewCell *cell = (UITableViewCell *)[[button superview] superview];
//first superview is cell.contentView
//second superview is cell
UserProfile *switchV = [[UserProfile alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:switchV];
UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:navController];
[pop presentPopoverFromRect:cell.frame inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[switchV release];
[navController release];
self.popoverController = pop; //save in property for later release
[pop release];
}
Si possible, laissez la direction de la flèche comme UIPopoverArrowDirectionAny et laissez-le trouver le meilleur endroit pour le mettre.
Edit:
Pour afficher la popover avec la flèche pointant vers le haut du bouton au lieu de la cellule, utilisez ceci:
[pop presentPopoverFromRect:button.frame inView:cell
permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
Toutefois, en fonction de la position de la cellule à l'écran, le popover peut ne pas avoir l'air juste sous le bouton. Utilisez "Any" au lieu de "Up", sauf si vous êtes sûr des résultats. Notez également que vous devez enregistrer une référence au contrôleur popover pour une version ultérieure (dans dealloc), sinon la [release pop] de la méthode peut provoquer un plantage. Pour un exemple détaillé, voir le sample app Popovers.
C'est mieux si vous postez le code dans votre question et expliquez ce qui se passe par rapport à ce que vous attendez. – Anna
Je l'ai posté, c'est le lien pastie :) – Anthony
Est-ce que ce code est dans didSelectRowAtIndexPath? Vous avez déclaré une cellule mais ne la définissez pas. – Anna