3

Mavericks では、NSSheets の開閉方法が変更されました。さらに難しいことに、リリース ノートは現在のドキュメントと一致していません (以下を参照)。

私はこれをやろうとしています:

MainSheetController (NSWindowController):

-(IBAction)callSheet:(id)sender {
    [sheetController openSheet];
}

シートコントローラー (NSObject):

 (void)openSheet {  
    [[NSBundle mainBundle] loadNibNamed:sheetName owner:self topLevelObjects:nil];
    NSLog(@"1");
    [self.mainWindowController.window beginSheet:self.sheet completionHandler:nil];
    NSLog(@"2");    
}

エラーや警告はありませんが、シートはありません..

現在のドキュメント:

#if NS_BLOCKS_AVAILABLE
- (void)beginSheet:(NSWindow *)sheetWindow completionHandler:(void (^)(NSModalResponse returnCode))handler NS_AVAILABLE_MAC(10_9);
- (void)beginCriticalSheet:(NSWindow *)sheetWindow completionHandler:(void (^)(NSModalResponse returnCode))handler NS_AVAILABLE_MAC(10_9);
#endif
4

3 に答える 3

5
- (IBAction)showSheet:(id)sender
{
    if (_windowController == nil)
    {
        _windowController = [MyWindowController new];
    }

    [[self window] beginSheet:[_windowController window] completionHandler:^(NSModalResponse returnCode)
    {
    }];
}

// And inside your MyWindowController class:

- (id)init
{
    self = [super initWithWindowNibName:@"MyWindowNibName"]; // TODO: Change the name of your NIB
    return self;
}

nib ファイルで、ウィンドウの「Visible At Launch」フラグがオフになっていることを確認します。

于 2013-11-29T11:16:25.863 に答える