私は(現在少なくとも)基本的なテキストエディタとして機能するCocoaドキュメントベースのアプリを持っています。.txt、.rtf、および.rtfdを保存し、それらに加えて.docおよび.docxをロードします。.docまたは.docxファイルを開いて編集し、閉じようとすると、保存するように通知されますが、アプリケーションはこれらの種類のファイルのビューアにすぎないため、保存オプションは何もしません。.docや.docxなど、表示のみが可能なタイプの「名前を付けて保存」として機能させるにはどうすればよいですか?
2 に答える
saveDocumentWithDelegate:::
カスタマイズNSDocument
したのを次のようにオーバーライドします。
- (void)saveDocumentWithDelegate:(id)delegate didSaveSelector:(SEL)didSaveSelector contextInfo:(void *)contextInfo
{
if (delegate != nil)
{
// use delegate or contextInfo to decide what operation you need to use...
[self runModalSavePanelForSaveOperation:NSSaveAsOperation
delegate:delegate
didSaveSelector:didSaveSelector
contextInfo:contextInfo];
}
else
{
[super saveDocumentWithDelegate:delegate
didSaveSelector:didSaveSelector
contextInfo:contextInfo];
}
}
デフォルトでdelegate
は、はNSWindow
ウィンドウを閉じるかNSDocumentController
、アプリケーションを終了してコントローラーが変更を確認するためにウィンドウを列挙する場合のいずれかです。
編集後に更新されたファイルを実際に書き込みたいのか、編集を禁止してドキュメントが変更されたという警告を防止したいのか、完全には明確ではありません。
保存の警告が表示されないようにするには、ドキュメントタイプの役割が「編集者」である場合は、最初に「閲覧者」に設定する必要があります。これはターゲット設定にあります。
次に、1。ドキュメントの内容が変更されていないことを確認する、および/または2.ドキュメントが汚れているとわざわざ表示しないように指示する必要があります。
ただし、ドキュメントの編集と保存を許可する場合は、それらのファイルを適切な形式で書き戻す必要があります。テキストエディットのソースコードが利用可能であり、Xcodeに含まれているという事実を除いて、これは簡単なことではありません。しかし、一見すると、NSDocumentはすでに.docと.docxをサポートしているように見えます。
テキストエディットのプロジェクトフォルダは/Xcode/Examplesにあります。