如何更改已弃用的beginSheetForDirectory方法

时间:2012-07-07 15:49:39

标签: objective-c cocoa xcode4.3 nssavepanel

我有一个使用beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:的应用。

我检查了Apple文档,该文档说它已被弃用并改为使用其他方法:

  

将“保存”面板显示为具有指定路径的工作表,   (可选)该路径中的指定文件。 (在Mac OS X中已弃用   v10.6中。使用beginSheetModalForWindow:completionHandler:而不是。)

我的问题是如何将此代码更改为新代码?

//  [savePanel setRequiredFileType:@"png"];
[savePanel beginSheetForDirectory:nil 
                             file:nil  
                   modalForWindow:[self window] 
                    modalDelegate:self 
                   didEndSelector:@selector(didEndSaveSheet:returnCode:conextInfo:) 
                      contextInfo:NULL];

1 个答案:

答案 0 :(得分:3)

您正在寻找beginSheetModalForWindow:completionHandler:方法。

示例:

NSSavePanel *savePanel = [NSSavePanel savePanel];

[savePanel beginSheetModalForWindow:_window completionHandler:^(NSInteger result) {
    if (result == NSFileHandlingPanelOKButton) {
        NSURL *savePath = [[savePanel URLs] objectAtIndex:0];
    } else {
        [savePanel close];
    }
}];