Hallo,
meine App zeigt im Wesentlichen Dialoge und Listen an, die als XML vom Server geladen werden.
In der ersten Version gab es einen UIViewController, der den Download und das Parsen übernahm und dann den ViewController für die Anzeige aufrief:
Dieser AnzeigeController hat in der Methode viewDidLoad das Füllen der eigenen Views mit Texten, Buttons etc. aufgerufen und das Ergebnis angezeigt.
Wählt man eine Aktion aus, schloss sich dieser ViewController und das Spiel begann von vorn.
Nun gab es weitere Vorbereitungen und Aktionen, die keine Änderung der Anzeige bewirkten.
Ich hielt es für eine gute Idee, diese Aktivitäten in eine neue Klasse auszulagern und komme dann zu der Struktur:
Startbild erzeugt die neue Klasse NextAction, abgeleitet von NSObject. Diese Klasse lädt die Daten und parst sie und ruft dann die Anzeige auf.
Klappt perfekt, aber nur ein Mal!
Ich habe dann gesehen, dass viewDidLoad nicht mehr aufgerufen wird und habe das Füllen der Anzeige direkt aufgerufen. Nützt nichts.
Dann habe ich die Anzeige beendet, bevor die Kontrolle an NextAction übergeben wird:
Nach dem Doanload wird der ViewController wieder erzeugt und angezeigt:
Alles anzeigen
Selbst dann wird viewDidLoad nicht mehr aufgerufen!
Kann es sein, dass erst ein anderer ViewController aufgerufen werden muss, damit die Darstellung wirklich klappt?
Oder was kannn ich sonst machen, damit meine Klasse NextAction den ViewController mit geändertem Inhalt anzeigen kann??
meine App zeigt im Wesentlichen Dialoge und Listen an, die als XML vom Server geladen werden.
In der ersten Version gab es einen UIViewController, der den Download und das Parsen übernahm und dann den ViewController für die Anzeige aufrief:
Dieser AnzeigeController hat in der Methode viewDidLoad das Füllen der eigenen Views mit Texten, Buttons etc. aufgerufen und das Ergebnis angezeigt.
Wählt man eine Aktion aus, schloss sich dieser ViewController und das Spiel begann von vorn.
Nun gab es weitere Vorbereitungen und Aktionen, die keine Änderung der Anzeige bewirkten.
Ich hielt es für eine gute Idee, diese Aktivitäten in eine neue Klasse auszulagern und komme dann zu der Struktur:
Startbild erzeugt die neue Klasse NextAction, abgeleitet von NSObject. Diese Klasse lädt die Daten und parst sie und ruft dann die Anzeige auf.
Klappt perfekt, aber nur ein Mal!
Ich habe dann gesehen, dass viewDidLoad nicht mehr aufgerufen wird und habe das Füllen der Anzeige direkt aufgerufen. Nützt nichts.
Dann habe ich die Anzeige beendet, bevor die Kontrolle an NextAction übergeben wird:
Nach dem Doanload wird der ViewController wieder erzeugt und angezeigt:
Quellcode
- -(void)prepareXmlViewControllerForTask:(int)nextTask {
- // if (xmlViewController && nextTask == FormTaskFillViews) {
- if (true) {
- // [xmlViewController release];
- xmlViewController = nil;
- }
- if (xmlViewController == nil) {
- xmlViewController = [[XmlViewController alloc] initWithNextActionClass:self];
- }
- [xmlViewController setFormTask:nextTask];
- [xmlViewController processXmlData];
- [parentViewController presentModalViewController: xmlViewController animated:YES];
- }
Selbst dann wird viewDidLoad nicht mehr aufgerufen!
Kann es sein, dass erst ein anderer ViewController aufgerufen werden muss, damit die Darstellung wirklich klappt?
Oder was kannn ich sonst machen, damit meine Klasse NextAction den ViewController mit geändertem Inhalt anzeigen kann??