自從我上一次使用Cocoa已經過去了一年,似乎很多變化。從NSOpenPanel對話框獲取文件名
我想運行一個打開的對話框並檢索文件路徑。過去,這是很簡單的,但現在......
的代碼是:
-(NSString *)getFileName{
NSOpenPanel* panel = [NSOpenPanel openPanel];
__block NSString *returnedFileName;
// This method displays the panel and returns immediately.
// The completion handler is called when the user selects an
// item or cancels the panel.
[panel beginWithCompletionHandler:^(NSInteger result){
if (result == NSFileHandlingPanelOKButton) {
NSURL* theDoc = [[panel URLs] objectAtIndex:0];
// Open the document.
returnedFileName = [theDoc absoluteString];
}
}];
return returnedFileName;
}
-(IBAction)openAFile:(id)sender{
NSLog(@"openFile Pressed");
NSString* fileName = [self getFileName];
NSLog(@"The file is: %@", fileName);
}
(縮進已在後搞砸了,但它是正確的代碼)
我的問題是一旦打開的對話框打開,最後的NSLog語句就會被執行,並且不會等到對話框關閉。這使得fileName變量爲null,這是最終NSLog報告的內容。
這是什麼造成的?
謝謝。
謝謝克里斯託弗。結合一些修剪,我認爲是蘋果部分的代碼膨脹,對它進行排序。 – 2015-02-06 12:12:45