3 Stimmen

Wie bricht man das Speichern von Einstellungen ab, wenn man Cocoa-Bindungen verwendet?

Ich fange gerade erst an, mich mit Bindungen zu beschäftigen. Ich habe begonnen, einen Einstellungsdialog zu implementieren, einige NSColorWell's an den gemeinsamen Standard-Controller zu binden. Das funktioniert perfekt. Meine Werte werden kodiert und korrekt gespeichert.

Was jedoch nicht funktioniert, ist das Abbrechen des Dialogs. Wenn ich abbreche, werden die Werte trotzdem gespeichert.

Es scheint, wie ich sollte die Abbrechen-Schaltfläche an die NSUserDefaultController "umkehren" binden, aber natürlich, wenn ich das tun, ich kann nicht binden es an "performClose" (es sei denn, es gibt eine Möglichkeit, eine Schaltfläche an mehrere Aktionen zu binden, die ich nicht bewusst bin).

Wie sollte ich die Schaltfläche "Abbrechen" binden, um sowohl die Änderungen rückgängig zu machen als auch das Fenster zu schließen? Offensichtlich könnte ich es tun, indem ich eine Aktionsmethode schreibe, die beides tut, aber es scheint wie sollte möglich sein, in nur IB.

7voto

Joshua Nozzi Punkte 60200

Zwei Dinge:

Erstens werden die Einstellungen unter Mac OS X standardmäßig sofort übernommen, wenn eine Änderung vorgenommen wird. Es gibt kein "Abbrechen" oder "Anwenden" für Einstellungsänderungen (wie in Windows). Es ist durchaus nicht ungewöhnlich, dass es eine Schaltfläche "Standard" gibt, die die Einstellungen zurücksetzt, aber kein "Abbrechen", da die Änderungen sofort übernommen werden. Die Einstellungen Ihrer Anwendung anders zu gestalten, ist ein wenig seltsam, da es nicht den Konventionen entspricht.

Zweitens: Da Sie diese Werte direkt über Bindungen ändern (wie bei der Verwendung des Ziel-/Aktionsmechanismus), haben Sie keine Möglichkeit, Änderungen rückgängig zu machen. Am besten ist es hier, einen Dictionary-Controller zu erstellen, dessen Inhalt eine Kopie der Einstellungen Ihrer Anwendung ist. Die Bearbeitung erfolgt dann in diesem Wörterbuch. Wenn der Benutzer die Bearbeitung abbricht, verwerfen Sie lediglich das Wörterbuch. Wenn der Benutzer die Änderungen akzeptiert, kopieren Sie die Einstellungen aus dem Wörterbuch in die eigentlichen Einstellungen der Anwendung und verwerfen sie dann. Wenn Sie Ihre App-Einstellungen "zwischenspeichern" müssen, ist dies eine gute Möglichkeit, dies zu tun, während Sie immer noch Bindings für die Verbindung der Benutzeroberfläche mit den Einstellungen verwenden, aber Sie sind immer noch für die Anwendung der Änderungen verantwortlich, wenn der Benutzer sie akzeptiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X