2013-02-26 8 views
6

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.

+0

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

+0

Hai avuto fortuna a capire come farlo con UIAppearance? –

+0

No, l'unica soluzione funzionante era smettere di usare 'UIAppearance' e impostare lo stile desiderato su ogni barra di navigazione individualmente. – SaltyNuts

risposta

0

provare qualcosa di simile:

MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init]; 
[mail.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

Questo dovrebbe ripristinare l'immagine di sfondo solo per questa istanza.

+0

Provato anche questo, non ha avuto alcun effetto, sfortunatamente. – SaltyNuts

+0

Provare a impostare l'immagine di sfondo dopo aver effettuato la chiamata per visualizzare il controller di composizione della posta. – rmaddy

+0

stesso risultato di prima :( – SaltyNuts

0
immagine di sfondo personalizzata Rimuovere

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

prima di chiamare,

MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init]; 

punto è quello di impostare qualsiasi personalizzazione barra di navigazione aspetto prima di init.