2012-07-07 19 views
2

我有一個應用程序使用beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:如何更改不推薦的beginSheetForDirectory方法

我檢查蘋果文檔其中所述它棄用,使用另一種方法來代替:

提出了一種保存面板爲具有指定的路徑的片材和,任選 ,在該路徑的指定文件。 (不推薦使用在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]; 

回答

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]; 
    } 
}]; 
+0

感謝安妮,試了一下,但是當我在測試它只是結冰,所以我想我必須繼續玩了,直到它工作正常的應用程序保存。 – incoe 2012-07-11 07:47:46

+0

好吧,我想知道爲什麼它不工作,但不知道如何做到這一點,前面使用的代碼用於從另一個方法中的另一個語句獲取if條件,是否可以添加像didEndSelector這樣的東西:在if語句中舊代碼中提到的@selector(didEndSaveSheet:returnCode:conextInfo :)? – incoe 2012-07-11 08:54:26

+0

[savePanel關閉];不需要 – 2014-11-20 19:29:44

相關問題