私はこれを尋ねる(最近のアイテムのサブメニューを削除または無効にする)多くの人々を見つけましたが、答えはありません。
少し調査した後...問題は、Appleがその特定のメニューを常に表示するように密かにハードコーディングしていることです。削除しても、NSWindowControllerはサイレントに再作成します。
私はこれを尋ねる(最近のアイテムのサブメニューを削除または無効にする)多くの人々を見つけましたが、答えはありません。
少し調査した後...問題は、Appleがその特定のメニューを常に表示するように密かにハードコーディングしていることです。削除しても、NSWindowControllerはサイレントに再作成します。
編集:一部の馬鹿は私の答えを言い換えたいと感じました。しないでください。または削除します。編集を最初に拒否したレビューアによると、「この編集は小さすぎます。提案された編集は、投稿内の複数の問題に対処する実質的な改善である必要があります。」だから:しないでください。
Appleには公式の回避策があります(メニューのハードコーディングの間違いを惜しみなく受け入れます):
http://developer.apple.com/library/mac/#qa/qa2001/qa1289.html
IBOutletを設定すると、正常に機能するようです。
@property( nonatomic, retain) IBOutlet NSMenu* fileMenu;
...そして、AppDelegateクラスがMainWindow.xib内に表示されていることを確認します(たとえば、青い立方体のオブジェクトを使用し、クラスをAppDelegateのクラスに設定します)...NIB内でファイルメニュー自体を接続できるようにしますアプリに直接送信します。
編集:実際には、変更-AppleのソースはXcode4で正しくコンパイルされず、コンパイラの警告が生成されます。代わりにこれが必要です:
NSInteger openDocumentMenuItemIndex = [self.fileMenu indexOfItemWithTarget:nil andAction:@selector(openDocument:)];
if (openDocumentMenuItemIndex>=0 &&
[[self.fileMenu itemAtIndex:openDocumentMenuItemIndex+1] hasSubmenu])
{
// APPLE'S COMMENT: We'll presume it's the Open Recent menu item, because this is
// APPLE'S COMMENT: the heuristic that NSDocumentController uses to add it to the
// APPLE'S COMMENT: File menu
[self.fileMenu removeItemAtIndex:openDocumentMenuItemIndex+1];
}