Sto gestendo la mia UINavigationBar. Ho bisogno di farlo a causa di una vasta scuoiatura. La documentazione di UINavigationController avverte che esistono limitazioni alla skining di UINavigationBar quando utilizzato con un UINavigationController.UINavigationBar topItem/items sembra doppio-pop sul retro
Ho inserito una registrazione estesa e da tutto quello che posso dire, premendo il pulsante "Indietro" in UINavigationController vengono visualizzati due elementi fuori dallo stack anziché uno. Ricevo una singola chiamata di delegato che mi dice che sta rimuovendo l'elemento logico, ma in realtà rimuove quella e un'altra.
L'elemento aggiunto a UINavigationController in awakeFromNib deve essere mai rimosso. Viene rimosso per qualche motivo.
Ci sono due domande simili, ma nessuna ha risposte soddisfacenti. Le due domande sono:
UINavigationBar .items accessor doesn't return the current UINavigationItem
UINavigationBar seems to pop 2 items off stack on "back"
- (void)awakeFromNib {
[headerView setDelegate: self];
[headerView pushNavigationItem: tableDisplay animated: NO];
}
- (void) selectedStory: (NSNotification *)not {
[headerView pushNavigationItem: base animated: NO];
NSLog(@"Selected story: %@", base);
}
- (void) baseNav {
NSLog(@"Current items: %@", [headerView items]);
BaseInnerItem *current = (BaseInnerItem *)[headerView topItem];
[self addSubview: [current view]];
}
- (BOOL)navigationBar: (UINavigationBar *)navigationBar shouldPushItem: (UINavigationItem *)item {
return YES;
}
- (BOOL)navigationBar: (UINavigationBar *)navigationBar shouldPopItem: (UINavigationItem *)item {
return YES;
}
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item {
NSLog(@"didPushItem: %@", item);
[self baseNav];
}
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item {
NSLog(@"didPopItem: %@", item);
[self baseNav];
}
A cura di aggiungere il debug rilevanti da un unico passaggio:
2010-10-13 02:12:45.911 Remix2[17037:207] didPushItem: <TableDisplay: 0x5d41cc0>
2010-10-13 02:12:45.912 Remix2[17037:207] Current items: (
"<TableDisplay: 0x5d41cc0>"
)
2010-10-13 02:12:49.020 Remix2[17037:207] didPushItem: <WebDisplay: 0x591a590>
2010-10-13 02:12:49.021 Remix2[17037:207] Current items: (
"<TableDisplay: 0x5d41cc0>",
"<WebDisplay: 0x591a590>"
)
2010-10-13 02:12:49.023 Remix2[17037:207] Selected story: <WebDisplay: 0x591a590>
2010-10-13 02:12:59.498 Remix2[17037:207] didPopItem: <WebDisplay: 0x591a590>
2010-10-13 02:12:59.499 Remix2[17037:207] Current items: (
)
Ho esattamente lo stesso problema, ma ho lasciato che il controller di navigazione gestisca la mia barra di navigazione personalizzata. Hai trovato una risposta a questo? – mmmattias