2012-02-28 7 views
2

私はサードパーティ製のコードでロードできるアプリケーションを持っています。サードパーティのコードで実行できる機能の1つは、アプリがエクスポートできる形式を追加することです。私は輸出を実施する手段としてsaveDocumentTo:を使用しています。NSSaveDialogで可能なエクスポート形式のリストを無効にする

私の文書では、writableTypesForSaveOperation:を無効にして保存するために利用可能なファイルタイプのメニューをカスタマイズできますが、選択した場合は適切なファイル拡張子がファイルに追加されませんメニューから選択します。

私はfileNameExtensionForType:saveOperation:を無効にしようとしましたが、それでも呼び出されません。

コンパイル時にわからない場合は、保存ダイアログで正しいファイル拡張子を見つけるにはどうすればよいですか?

答えて

3

私はこれを、保存パネルのカスタムエクスポートアクセサリビューで実行しました。カスタムエクスポートアクセサリビューは、ユーザがエクスポートしたいフォーマットを変更するたびに、NSSavePanelの許可されたファイルタイプを変更するだけです。

拡張子を設定する場合は、その拡張子を含む1つの要素を含む配列を渡します。 、

ディスカッションファイルタイプは共通のファイル拡張子をすることができ

ドキュメントは、より複雑なケースをサポートするため、この点で-[NSSavePanel setAllowedFileTypes:]の行動のためのいくつかの重要な詳細を持っていますまたはUTI。 nil値は、任意のファイルタイプを使用できることを示します。デフォルト値はnilです。

ユーザーが拡張子を指定しない場合、allowedFileTypesの最初の項目が保存パネルの拡張子として使用されます。ユーザーが配列にない型を指定し、AllowedOtherFileTypesがYESの場合、保存するかどうかを確認するダイアログが表示されます。

NSOpenPanel:Mac OS Xのバージョンがv10.6未満の場合、このプロパティは無視されます。 v10.6以上のバージョンにリンクするアプリケーションの場合、このプロパティは開いているパネルでどのファイルを有効にするかを決定します。廃止されたメソッドを使用してオープンパネル(型:パラメータを取るもの)を表示すると、この値は上書きされますので、使用しないでください。許可されているファイルタイプは、パネルの実行中に変更できます(アクセサリビューなどから)。ファイルタイプは、一般的なファイル拡張子、またはUTIです。これは、「有効なファイルタイプ」とも呼ばれます。nil値は、すべてのファイルを有効にする必要があることを示します。

また、あなたは、いくつかの異なるフォーマットを持っている場合は、このの複雑さを軽減することができますいくつかのケースでは、専用のエクスポートダイアログが表示されることがあります。前と同じように、サポートするファイルタイプを更新するだけです(この場合、必ずしも動的である必要はありません)。

+1

専用のアクセサリビューを作成した場合、どのように拡張機能を設定しますか? –

+0

@JakubHamplうわー、実装を見直し、私が書いたほど単純ではありません - 明確化を要求してくれてありがとう。私は答えを更新し、私が何をしたのかを記述しました。また、ドキュメントのメカニックにも落ちました。 – justin

関連する問題