Ho un'immagine personalizzata del navBar nei controller di navigazione nella mia app, impostata utilizzando il protocollo UIAppearance. Tuttavia, quando si invia la posta attraverso l'app (tramite MFMailComposeViewController
), voglio il navBar predefinito al posto di quello personalizzato. Ho provato l'approccio delineato in questa domanda: UIAppearance Remove Custom NavBar Background for UIPopoverController ma non ha funzionato. Il codice che ho usato è stato:UIAseguenza Rimuovi sfondo NavBar personalizzato per MFMailComposeViewController
[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
Ma non ha avuto alcun effetto. La mia app è iOS 6+. È qualcosa di specifico per MFMailComposeViewController
o mi manca qualcosa da questo?
Edit: altri approcci tentati:
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
mailer.navigationBar.barStyle = UIBarStyleBlack;
[self.navigationController presentViewController:mailer animated:YES completion:nil];
[mailer.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
Impostazione UIBarStyleBlack
ha qualche effetto come il pulsante "Annulla" in seguito diventa nero, ma l'immagine di sfondo è ancora impostato al vecchio valore.
Sembra che l'unica via d'uscita sia semplicemente non usare 'UIAppearance' ma impostare l'immagine su quei controller di navigazione che ne hanno bisogno individualmente. – SaltyNuts
Hai avuto fortuna a capire come farlo con UIAppearance? –
No, l'unica soluzione funzionante era smettere di usare 'UIAppearance' e impostare lo stile desiderato su ogni barra di navigazione individualmente. – SaltyNuts