iOS iPad UIActionSheet Problem
Ich bin derzeit an der Entwicklung einer Anwendung muss die option "teilen" über mehrere Dienste, wie E-Mail, twitter.
Zu diesem, ich habe eine UIBarButtonItem
kodiert und, wenn Sie berührt, löst dies:
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:@""
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[sheet addButtonWithTitle:@"Email"];
[sheet addButtonWithTitle:@"Tweet"];
[sheet addButtonWithTitle:@"Cancel"];
sheet.cancelButtonIndex = sheet.numberOfButtons-1;
[sheet showFromRect:self.view.bounds inView:self.view animated:YES];
[sheet release];
In diesem Zusammenhang zu erkennen, welche Taste ausgewählt ist:
clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == actionSheet.cancelButtonIndex) { return; }
switch (buttonIndex) {
case 0:
{
[self emailThis];
break;
}
case 1:
{
[self tweetThis];
break;
}
}
Diesem Werk ein behandeln auf dem iPhone. Aber leider zeigt es fälschlicherweise auf dem iPad. Es sieht aus wie es versucht, um die Anzeige der UIPopoverController
, aber es ist positioniert Zentrum der navbar mit praktisch keine Höhe.
Ich habe mir in den UIPopoverController, aber ich kann nicht scheinen, um herauszufinden, wie es zu benutzen mit Tasten. Gibt es trotzdem kann ich anpassen, der code oben, um richtig angezeigt die Schaltflächen, als Sie versucht sich schon.
Vielen Dank,
Ryan
PS: ich bin neu in objective-c/iOS-Programmierung, also seid bitte spezifisch. Danke 🙂
EDIT:
Ich habe versucht mit:
[sheet showFromBarButtonItem:[self share] animated:YES];
Aber es funktioniert nicht. Hier ist mein code für den button:
UIBarButtonItem *share = [[UIBarButtonItem alloc]
initWithTitle:@"Share"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(loadShare)];
self.navigationItem.rightBarButtonItem = share;
[share release];
Auch hier ist der code in der .h-Datei:
@interface DetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
UIBarButtonItem *share;
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem *share;
Hier ist die debug-Fehler:
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '* -[__NSPlaceholderArray
initWithObjects:count:]: attempt to insert null-Objekt aus dem Objekte[0]'
Du musst angemeldet sein, um einen Kommentar abzugeben.
...
Statt [Blatt showFromRect], verwenden Sie [sheet showFromBarButtonItem], und zeigen Sie es Ihrem Anteil UIBarButtonItem.
Hinweis: Sie müssen möglicherweise erstellen Sie ein IBOutlet oder ivar für Ihre UIBarButtonItem, wenn Sie nicht schon eine haben, aber das ist extrem einfach und ich bin erraten, die Sie tun können, dass.
Ihr Problem ist, dass Sie mit
showFromRect
mit der rect als den ganzen Bildschirm. Das bedeutet, dass das popup ist die Platzierung der "Pfeil" der beste center auf dem Bildschirm. Was Sie wollen, ist entwedershowFromBarButtonItem
oder pass in der rect (self.shareButtonItem.frame
) mit der Taste ein.