Hallo,
wie "resettet" ihr Fenster + deren Controls? Ich habe einige Fenster (in eigenen Nibs - mit eigenen Controllern), die angezeigt werden - der User macht diverse Einstellungen und schließt das Fenster wieder. Ruft der User das Fenster wieder auf sind die Einstellungen, die er getätigt hat natürlich noch vom letzten Mal sichtbar. Dies würde ich gerne unterbinden und die Einstellungen, die ich in der Nib vorgebe bei jedem Anzeigen des Fensters wiederherstellen.
Wie macht ihr sowas? Ich habe in den letzten Wochen 2 Lösungen erarbeitet:
Lösung 1:
Ich habe einen abstrakten Controller geschrieben, der folgende Aufgaben übernimmt: Eine Nib laden, eine Verbindung zwischen Controller und "Hauptfenster" der Nib zur Verfügung stellen (über ein IBOutlet) und eben bei Bedarf die "Defaults" wiederherstellen. Lege ich eine neue Nib an erzeuge ich auch gleich einen für diese Nib zuständigen Controller, der von diesem abstrakten Controller ableitet und dann einige Methoden überschreiben darf - z.B:
Diese Methode liefert ein NSDictionary, welches die Defaulteinstellungen enthält. Zb. soll der SelectionIndex eines Popups in der Nib auf einem Fenster auf 2 gestellt werden. Dann enthält dieses Dict einen Key: "MeinPopupSelectionIndex" mit dem Value 2.
Der abstrakte Controller stellt zusätzlich noch eine Verbindung mit einem NSObjectController her (auch über ein IBOutlet).
Überschreibe ich nun die Methode:
und gebe YES zurück, dann registriert sich der abstrakte Controller für mich beim Fenster und setzt den Content des NSObjectControllers bei jedem anzeigen des Fensters neu. Die Controls im Fenster binde ich einfach an den NSObjectController. Tada - funktioniert.
Lösung 2: Ich lade einfach die entsprechende Nib immer wieder neu. Allerdings ist mir noch nicht ganz klar, welche Seiteneffekte dies haben kann.
Habt ihr da eine bessere Lösung?
wie "resettet" ihr Fenster + deren Controls? Ich habe einige Fenster (in eigenen Nibs - mit eigenen Controllern), die angezeigt werden - der User macht diverse Einstellungen und schließt das Fenster wieder. Ruft der User das Fenster wieder auf sind die Einstellungen, die er getätigt hat natürlich noch vom letzten Mal sichtbar. Dies würde ich gerne unterbinden und die Einstellungen, die ich in der Nib vorgebe bei jedem Anzeigen des Fensters wiederherstellen.
Wie macht ihr sowas? Ich habe in den letzten Wochen 2 Lösungen erarbeitet:
Lösung 1:
Ich habe einen abstrakten Controller geschrieben, der folgende Aufgaben übernimmt: Eine Nib laden, eine Verbindung zwischen Controller und "Hauptfenster" der Nib zur Verfügung stellen (über ein IBOutlet) und eben bei Bedarf die "Defaults" wiederherstellen. Lege ich eine neue Nib an erzeuge ich auch gleich einen für diese Nib zuständigen Controller, der von diesem abstrakten Controller ableitet und dann einige Methoden überschreiben darf - z.B:
Diese Methode liefert ein NSDictionary, welches die Defaulteinstellungen enthält. Zb. soll der SelectionIndex eines Popups in der Nib auf einem Fenster auf 2 gestellt werden. Dann enthält dieses Dict einen Key: "MeinPopupSelectionIndex" mit dem Value 2.
Der abstrakte Controller stellt zusätzlich noch eine Verbindung mit einem NSObjectController her (auch über ein IBOutlet).
Überschreibe ich nun die Methode:
und gebe YES zurück, dann registriert sich der abstrakte Controller für mich beim Fenster und setzt den Content des NSObjectControllers bei jedem anzeigen des Fensters neu. Die Controls im Fenster binde ich einfach an den NSObjectController. Tada - funktioniert.
Lösung 2: Ich lade einfach die entsprechende Nib immer wieder neu. Allerdings ist mir noch nicht ganz klar, welche Seiteneffekte dies haben kann.
Habt ihr da eine bessere Lösung?
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].