如何在小牛队中打开NSSheet?

Dav*_*nte 3 cocoa nswindowcontroller osx-mavericks

在Mavericks中,打开和关闭NSSheets的方法已经改变.为了使其更加严格,发行说明与当前文档不符(见下文).

我正在尝试这样做:

MainSheetController(NSWindowController):

-(IBAction)callSheet:(id)sender {
    [sheetController openSheet];
}
Run Code Online (Sandbox Code Playgroud)

SheetController(NSObject):

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

我到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
Run Code Online (Sandbox Code Playgroud)

Pet*_*isu 11

- (IBAction)userButtonPressed:(id)sender {

    UserLoginWindowController * wc = [UserLoginWindowController new];
    // we keep a reference, so the WC doesn't deallocate
    self.modalWindowController = wc;

    [[self window] beginSheet:[wc window] completionHandler:^(NSModalResponse returnCode) {
        self.modalWindowController = nil;
    }];

}
Run Code Online (Sandbox Code Playgroud)

在UserLoginWindowController中

- (IBAction)cancelButtonPressed:(id)sender {

    [[[self window] sheetParent] endSheet:[self window] returnCode:NSModalResponseCancel];

}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ram 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;
}
Run Code Online (Sandbox Code Playgroud)

在您的nib文件中,确保窗口中未选中"Visible At Launch"标志.