Ich habe eine UIAlertController
mit dem bevorzugten Stil UIAlertControllerStyleAlert
erstellt. Die Warnung zeigt an, wenn die leftBarButtonItem
abgegriffen wird. Ich habe eine UIBarButtonItem
Eigenschaft namens backButton
erstellt und die leftBarButtonItem = self.backButton
festgelegt. Dies funktioniert wie vorgesehen. Ich verwende keine Storyboards.UIAlertController verschiebt leftBarButtonItem nach unten
Das Problem ist, dass die leftBarButtonItem
nach unten bewegt (meine Schätzung: etwa 20 Punkte), wenn die Warnung zeigt. Warum passiert dies?
Ich weiß, wie Sie die Schaltfläche anzeigen/ausblenden, so dass der Benutzer nicht sehen kann, dass die Schaltfläche nach unten verschoben wurde. Das ist aber scheiße. Warum passiert es überhaupt?
Ich habe nicht gefunden beliebig ähnliche Ausgaben online.
@property (strong, nonatomic) IBOutlet UIBarButtonItem *backButton;
in viewDidLoad:
self.backButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonPressed)];
[self.backButton setImage:[UIImage imageNamed:@"back-arrow-grey"]];
self.navigationItem.leftBarButtonItem = self.backButton;
in backButtonPressed:
{
self.navigationItem.leftBarButtonItem = nil; //to hide backButton because it moves down
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"My title" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionLeave = [UIAlertAction actionWithTitle:@"Leave" style:UIAlertActionStyleDefault handler:...//which works correctly
UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"Go back" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
self.navigationItem.leftBarButtonItem = self.backButton; //to show backButton again now that the alert is dismissed
//other things happen here that work as designed
}];
[alertController addAction:actionLeave];
[alertController addAction:actionCancel];
[self presentViewController:alertController animated:YES completion:^{}];
}
Keine Ahnung, aber 20pts ist die Größe der Statusleiste für mich, das ist der erste Ort, an dem ich aussehen würde. – dstudeba