Ich habe ein sehr seltsames Problem mit UINavigationController auf dem iPhone und schlage mir deswegen den Kopf an die Wand.
Im Grunde genommen rufe ich einen Server auf und wenn dieser Aufruf fehlschlägt, ersetze ich die aktuelle Ansicht durch eine Ansicht mit einer Fehlermeldung. Der fragliche Code wird im Hauptthread durch Verwendung von performSelectorOnMainThread aufgerufen.
Was in der Praxis passiert, ist dass auf dem Gerät etwa die Hälfte der Zeit ein leerer weißer Bildschirm angezeigt wird. Auf dem Simulator wird jedes Mal ein leerer Bildschirm angezeigt, was mich dazu veranlasst anzunehmen, dass dies vielleicht ein Art Timing-Problem ist, das aufgrund besserer Verarbeitungsgeschwindigkeiten im Simulator deutlicher wird. Es funktioniert perfekt, wenn ich dieselbe Funktion aufrufe, indem ich auf einen Button im UI klicke, um die Seite anzuzeigen, daher denke ich nicht, dass es ein Problem mit dem Code selbst ist.
Ich habe überprüft, dass der Controller, den ich hinzufüge, im Navigationsstapel ist. Bestätigt, dass er im Hauptthread aufgerufen wird, er ist sichtbar, die Rahmengröße und -position korrekt sind. Ich habe versucht, die Ansicht explizit sichtbar zu setzen, sie im übergeordneten Ansicht nach vorne verschoben und setNeedsDisplay aufgerufen und sogar manuell drawRect aufgerufen. Nichts davon funktioniert.
Irgendwelche Gedanken dazu, was hier passieren könnte? Ich gehe davon aus, dass es etwas mit der Runloop zu tun hat, aber ich kann es nicht herausfinden. Hilfe wäre sehr willkommen. Der relativ einfache Code im Frage ist unten aufgeführt
UINavigationController* navController = self.navigationController;
int count = [navController.viewControllers count];
NSMutableArray* controllers = [[NSMutableArray alloc] initWithCapacity:count];
for (int i=0; i