6 Stimmen

Benutzerdefinierte Zubehöransicht für NSSavePanel von NSDocument

Betrachten Sie ein Cocoa NSDocument, das zwei Dokumenttypen unterstützt (z.B. BMP und JPEG). Während ein Typ keine Speicheroptionen hat (z.B. BMP), hat der andere dies (z.B. Kompressionsstufe für JPEG).

Wie implementiert man das?

Ich verstehe, dass Sie prepareSavePanel: überschreiben und die Zusatzansicht des gegebenen NSSavePanel setzen sollten. Wenn Sie dies jedoch tun, wird die Standard-Zusatzansicht durch das Dokumenttyp-Popup ersetzt.

Ist es notwendig, das Dokumenttyp-Popup neu zu erstellen, wenn Sie eine benutzerdefinierte Zusatzansicht verwenden?

Wenn ja, wie kann ich den ausgewählten Dokumenttyp und die zusätzlichen Speicheroptionen an die Schreibmethoden des NSDocument übergeben?

Wenn nein, wie kann ich die zusätzlichen Speicheroptionen (z.B. Kompressionsstufe) nur anzeigen, wenn der entsprechende Dokumenttyp (z.B. JPEG) ausgewählt wurde? Gibt es eine Delegatenmethode für Dokumenttyp-Änderungen im NSSavePanel?

2voto

Mike Abdullah Punkte 14832

Ich bin ziemlich sicher, dass ja, wenn Sie eine benutzerdefinierte Zubehöransicht wie diese möchten, das gesamte Ding bereitstellen müssen. Es ist schade - aber es schadet nicht, einen Radar zu erstellen!

Es könnte möglich sein, Ihre eigene Zubehöransicht in -prepareSavePanel: bereitzustellen und dann -fileTypeFromLastRunSavePanel überschreiben, um den ausgewählten Typ zurückzugeben. Allerdings machen die Dokumente von NSDocument keine Versprechungen, dass es das respektieren wird, ärgerlicherweise. Versuchen Sie es und sehen Sie!

Wenn das nicht funktioniert, sieht es so aus, als müssten Sie Ihre eigene Implementierung von -runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo: bereitstellen. Befolgen Sie Apples Beschreibung der Methode:

Die Standardimplementierung dieser Methode stellt zunächst sicher, dass ein über die Cocoa Bindings' NSEditorRegistration informellen Protokoll registrierter Editor seine Änderungen übernommen hat, erstellt dann ein Speicherpanel, fügt eine Standard-"Dateiformat"-Zubehöransicht hinzu, wenn es mehr als einen Dateityp gibt, aus denen der Benutzer wählen kann und [self shouldRunSavePanelWithAccessoryView] gibt YES zurück, setzt verschiedene Attribute des Panels, ruft [self prepareSavePanel:theSavePanel] auf, um Gelegenheit zur Anpassung zu geben, und präsentiert dann das Panel. Wenn der Benutzer das Panel genehmigt, wird -saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo: aufgerufen.

Die Dokumente für -writableTypesForSaveOperation: weisen darauf hin:

Sie können diese Methode aufrufen, wenn Sie eine benutzerdefinierte Speicherpanel-Zusatzausgabe erstellen, um einfach dieselben Typen zu präsentieren, die NSDocument in seinem standardmäßigen Dateiformat-Popup-Menü anzeigen würde.

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