Ho creato uno UIAlertController
con lo stile preferito di UIAlertControllerStyleAlert
. L'avviso mostra quando viene toccato lo leftBarButtonItem
. Ho creato una proprietà UIBarButtonItem
denominata backButton
e impostato il leftBarButtonItem = self.backButton
. Questo funziona come progettato. Non sto usando gli storyboard.UIAlertController sposta a sinistraBarButtonItem in basso
Il problema è che leftBarButtonItem
si sposta verso il basso (la mia ipotesi: circa 20 punti) quando viene visualizzato l'avviso. Perché sta succedendo?
So come mostrare/nascondere il pulsante in modo che l'utente non possa vedere quel pulsante quando si è spostato verso il basso. Tuttavia, questo fa schifo. Perché sta succedendo in primo luogo?
Non ho trovato qualsiasi simili problemi 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:^{}];
}
Nessuna idea, ma 20pts è la dimensione della barra di stato per me, quindi questo è il primo posto che guarderei. – dstudeba