gpt4 book ai didi

objective-c - 如何关闭 NSOpenPanel

转载 作者:行者123 更新时间:2023-12-03 17:10:45 28 4
gpt4 key购买 nike

我需要打开一个文本文件并处理其中的每一行。我无法关闭 NSOpenPanel,因此我可以继续处理。下面包含了我几年前在这里找到的代码,我希望有人发现了不同的方法。 NSSavePanel 按预期执行,单击按钮时关闭。

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

最佳答案

Check out my example project here that I used to figure this stuff out, CocoaSheets 。但请注意,这是使用任何模式表的一般情况,而不仅仅是 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];
}

关于objective-c - 如何关闭 NSOpenPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com