Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在窗口中显示图纸视图_Macos_Cocoa_Appkit - Fatal编程技术网

Macos 如何在窗口中显示图纸视图

Macos 如何在窗口中显示图纸视图,macos,cocoa,appkit,Macos,Cocoa,Appkit,如何实现下图中的视图。 在系统首选项>网络中单击+按钮时显示的视图 我有以下问题: 这个视图系统是否有一个特定的名称(比如popover),因为我在Mac的很多地方都见过它 如何在IB中实现它 这可以在弹出窗口而不是NSWindow中完成吗?(或者只能在类似NSWindow的工具栏中完成) 更新: 更新标题以提高Cocoa中的可见性,这些称为工作表。看一看,然而,这是可怕的过时 您需要在要显示工作表的窗口上调用-beginSheet:completionHandler:。如果您有单窗口应用程

如何实现下图中的视图。
系统首选项>网络中单击+按钮时显示的视图


我有以下问题:

  • 这个视图系统是否有一个特定的名称(比如popover),因为我在Mac的很多地方都见过它
  • 如何在IB中实现它
  • 这可以在弹出窗口而不是NSWindow中完成吗?(或者只能在类似NSWindow的工具栏中完成)
  • 更新:
    更新标题以提高Cocoa中的可见性,这些称为工作表。看一看,然而,这是可怕的过时

    您需要在要显示工作表的窗口上调用
    -beginSheet:completionHandler:
    。如果您有单窗口应用程序,您可以向AppDelegate请求窗口并按如下方式启动工作表

    // This code should be in AppDelegate which implement the -window method
    NSWindow *targetWindow = [self window]; // the window to which you want to attach the sheet
    NSWindow *sheetWindow = self.sheetWindowController.window // the window you want to display at a sheet
    
    // Now start-up the sheet
    [targetWindow beginSheet:sheetWindow completionHandler:^(NSModalResponse returnCode) {
    
            switch (returnCode) {
    
                case NSModalResponseCancel:
                    NSLog(@"%@", @"NSModalResponseCancel");
                    break;
    
                case NSModalResponseOK:
                    NSLog(@"%@", @"NSModalResponseOK");
                    break;
    
                default:
                    break;
            }
        }];
    
    您会注意到,当工作表完成时,它将返回一个特定的模态响应——我们将很快返回到这一点

    接下来,您需要实现要在工作表中显示的内容;这必须在NSL窗口中完成。我发现使用NSWindowController并在单独的XIB文件中实现窗口要容易得多。例如,见下文

    现在,您需要在自定义NSWindowController(或者如果您是老派并且喜欢管理自己的NIB加载,则为普通NSWindow)中实现代码,该代码将发出正确的模式响应。在这里,我将取消和确定按钮连接到以下操作方法

    - (IBAction)cancelButtonAction:(id)sender {
        [[[self window] sheetParent] endSheet:self.window returnCode:NSModalResponseCancel];
    }
    
    - (IBAction)OKButtonAction:(id)sender {
        [[[self window] sheetParent] endSheet:self.window returnCode:NSModalResponseOK];
    }
    
    模型响应将被发送到完成处理程序块


    谢谢。在popover中显示图纸怎么样?popover是一种不同的技术。您不会在popover中显示图纸,您只需要为popover提供一个要显示的视图。阅读人机界面指南,了解何时何地使用popover vs.sheets。Popover是Cocoa中非常新的技术,API也非常好。哇,你是对的,苹果的doc真的过时了,上面有一个全新的闪亮的答案。还有一个github上的示例项目,因为我必须自己解决它。