cocoa - 如何在 Mavericks 中打开 NSSheet?

标签 cocoa nswindowcontroller osx-mavericks

在 Mavericks 中,打开和关闭 NSSheets 的方法已更改。为了让它变得更难,Release Notes与当前文档不匹配(见下文)。

我正在尝试这样做:

MainSheetController(NSWindowController):

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

SheetController(NSObject):

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

我到达 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

最佳答案

- (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;
    }];

}

在 UserLoginWindowController 中

- (IBAction)cancelButtonPressed:(id)sender {

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

}

关于cocoa - 如何在 Mavericks 中打开 NSSheet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608665/

相关文章:

objective-c - 如何使用 NSWindowController 在标准应用程序中显示窗口?

java - 无法运行Android项目: Gradle Project Refresh Failed

python - 小牛升级后 virtualenvwrapper 的终端问题

objective-c - Mac 操作系统 : How to detect that NO window is selected?

cocoa - 在单个 NSTableView 中显示多个实体的数据(核心数据)

macos - 禁用 NSTableView 行聚焦环

objective-c - 交换 View - NSWindowController 和 NSViewController

objective-c - NSWindow 设置框架高于屏幕

cocoa - Cocoa 是否有 ORM 框架,或者使用不同技术实现类似目标的框架?

cocoa - 如何在 Xamarin.Mac 中检测 NSView 的调整大小?