Objective c 如何关闭NSOpenPanel
我需要打开一个文本文件并处理其中的每一行。我无法关闭NSOpenPanel以便继续处理。下面是我几年前在这里找到的代码,我希望有人发现了一种不同的方法。NSSavePanel按预期执行,单击按钮时关闭Objective c 如何关闭NSOpenPanel,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我需要打开一个文本文件并处理其中的每一行。我无法关闭NSOpenPanel以便继续处理。下面是我几年前在这里找到的代码,我希望有人发现了一种不同的方法。NSSavePanel按预期执行,单击按钮时关闭 - (IBAction)loadSettings:(id)sender { NSString *t = [self splitSettings:@"k"]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC /
- (IBAction)loadSettings:(id)sender
{
NSString *t = [self splitSettings:@"k"];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC / 100), dispatch_get_main_queue(), ^(void){
// some other method calls here
});
int i = 4; // so I have a breakpoint
}
- (NSString*)splitSettings:(NSString*)inFile
{
NSOpenPanel *zOpenPanel = [NSOpenPanel openPanel];
NSArray *arrayOfExtensions = [NSArray arrayWithObject:@"txt"];
[zOpenPanel setAllowedFileTypes:arrayOfExtensions];
NSInteger intResult = [zOpenPanel runModal];
if (intResult == NSFileHandlingPanelCancelButton) {
NSLog(@"readUsingOpenPanel cancelled");
return @"Cancelled";
}
NSURL *zUrl = [zOpenPanel URL];
// read the file
NSString * zStr = [NSString stringWithContentsOfURL:zUrl encoding:NSASCIIStringEncoding error:NULL];
return zStr;
}
。但请注意,这适用于使用任何模态表的一般情况,而不仅仅是NSOpenPanel。也许有人会发布NSOpenPanel的具体案例,无论如何,我希望这会有所帮助
使用以下命令启动模式窗口:
[[self window] beginSheet:self.sheetWindowController.window completionHandler:^(NSModalResponse returnCode) {
switch (returnCode) {
case NSModalResponseCancel:
NSLog(@"%@", @"NSModalResponseCancel");
break;
case NSModalResponseOK:
NSLog(@"%@", @"NSModalResponseOK");
break;
default:
break;
}}];
然后将“取消”和“确定”按钮连接到以下操作方法。请注意,您使用sheetParent
结束工作表
- (IBAction)cancelButtonAction:(id)sender {
[[[self window] sheetParent] endSheet:self.window returnCode:NSModalResponseCancel];
}
- (IBAction)OKButtonAction:(id)sender {
[[[self window] sheetParent] endSheet:self.window returnCode:NSModalResponseOK];
}
我读了你的参考资料,下载了你的项目并追踪了它。我不知道如何把它应用到我的案例中。