Sie haben eine Schaltfläche in einer Tabellenansichtszelle und Sie möchten ein Popover anzeigen, das auf diese Zelle zeigt, wenn Sie auf die Schaltfläche klicken.
Zuerst die Taste, um die Zelle in cellForRowAtIndexPath fügen etwas wie folgt aus:
(muss nicht abgerundet rect sein) über
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];
Ein wichtiger Punkt ist, dass in der @selector, Es gibt einen Doppelpunkt nach profileUser (dies teilt der Schaltfläche mit, dass sie einen Verweis auf sich selbst als ersten Parameter an profileUser senden soll). Diese Referenz kann verwendet werden, um herauszufinden, welche Zelle ausgewählt wurde.
Die profileUser:
-(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];
}
Wenn möglich, lassen Sie die Pfeilrichtung wie UIPopoverArrowDirectionAny und lassen Sie es der beste Ort, herauszufinden, es zu setzen: Methode sollte so etwas wie dieses.
Edit:
Um die popover mit dem Pfeil zeigt auf die Taste anstelle der Zelle nach oben zeigt, verwenden Sie diese:
[pop presentPopoverFromRect:button.frame inView:cell
permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
jedoch in Abhängigkeit von der Position der Zelle auf dem Bildschirm, Das Popover sieht unter der Schaltfläche möglicherweise nicht richtig aus. Verwenden Sie "Any" anstelle von "Up", außer Sie sind sich der Ergebnisse sicher.
Beachten Sie auch, dass Sie einen Verweis auf den Popover-Controller für die spätere Veröffentlichung (in Dealloc) speichern sollten, da andernfalls die [Pop-Version] in der Methode einen Absturz verursachen könnte. Ein detailliertes Beispiel finden Sie unter sample app Popovers.
Es ist besser, wenn Sie den Code in Ihrer Frage veröffentlichen und erklären, was passiert, was Sie erwarten. – Anna
Ich postete es, es ist der Pastie Link :) – Anthony
Ist dieser Code in didSelectRowAtIndexPath? Sie haben die Zelle deklariert, setzen sie jedoch nicht. – Anna