我希望我的应用程序只有一个文档,但有几个屏幕,而不需要使用几个窗口.实现这一目标的最佳方法是什么?我正在考虑使用单个NSPersistentDocument,它将以显示一组控件的NSViewController开始,然后将该视图交换为另一个NSViewController.
我的问题是:这是正确使用NSViewControllers吗?甚至可以做到吗?如果两者的答案都是肯定的,那么如何在文档中交换另一个视图呢?
我使用这里给出的代码来保存和加载图像
当我在一个视图控制器中一起使用它时工作正常,但是当我在一个视图控制器中使用saveImage方法并尝试在另一个视图控制器中加载图像时,图像返回空白...
在视图控制器A中,我使用以下内容保存图像
- (void)saveImage: (UIImage*)image
{
    NSLog(@"saveimage called");
    if (image != nil)
    {
        NSLog(@"Image not null");
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString* path = [documentsDirectory stringByAppendingPathComponent:
                          @"test.png" ];
        NSData* data = UIImagePNGRepresentation(image);
        [data writeToFile:path atomically:YES];
        QrImageView.image = nil;
    }
}
并在视图控制器说B我正在使用..加载图像..
- (UIImage*)loadImage
{
    NSError *error;
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* path = [documentsDirectory stringByAppendingPathComponent:
                      @"test.png" ];
    UIImage* image …我的应用程序有一个自定义格式,它在 Info.plist 中注册为编辑器,并且可以读取和写入该格式。它还可以读取许多其他格式,但无法写入。对于这些格式,它在 Info.plist 中注册为查看器。
当我打开其他格式之一时,一切看起来都很好,但是当我保存文件时,我的 NSDocument 会收到一条消息,其中writeToURL:ofType:error:包含我加载的文件的 URL 以及我无法写入的格式的 UTI 类型。
-(NSArray *)writableTypes仅返回我的自定义格式的 UTI,并且-(BOOL)isNativeType:仅返回我的自定义格式的 UTI 的 YES。
我想做的是,就像其他具有本机格式但可以从其他格式读取的应用程序一样,当用户按“保存”时,保存面板将打开,用户选择一个文件名来保存为本机类型。
这是 NSDocument 自己可以做的事情,还是我需要检查一下writeToURL:ofType:error:是否需要手动打开保存面板?
我正在使用NSDocument但我想禁用撤消管理器.
我该怎么做?
当基于文档的应用程序处于活动状态并且没有打开的窗口时,会自动创建一个新的文档窗口。我想防止这种行为并显示“选择模板”对话框,而不是默认创建空白文档。
正如您在屏幕截图中看到的,新文档是在NSApplicationMain.
我怎样才能防止这种情况并显示我的窗口?
我有一个基于文档的应用程序,但我没有使用撤消.如何将窗口状态更改为"脏"且某些时间?
谢谢.
我正在从服务器下载图像并保存该locall
 [imageData writeToFile:filePath atomically:YES];
但是我怎么知道写入结束时更新UI.我已经搜索了一个回电但我找不到任何东西.
我们怎么知道写文件何时完成?
在基于文档的应用程序中,使用XIB文件创建新窗口时,其行为是:
但是,使用情节提要板时并不会这样做。请参阅测试项目。
在 macOS 10.12 中,为 NSDocument 应用程序添加了一个新的标签栏。您可以阻止工具栏出现(请参阅如何禁用 Sierra 应用程序中的“显示标签栏”菜单选项?)。但是如何删除用于添加新 Windows 的“+”按钮?
我有一个适用于 macOS 的只读音乐播放器应用程序,它使用 NSDocument 免费获取所有文件处理逻辑。
我现在遇到的问题是,每次应用程序崩溃(或被调试器停止)而一个或多个播放器窗口打开时,它们会在应用程序重新启动时自动重新打开。我不希望这样,因为它会干扰调试,并且这个应用程序不会真正发生合法的崩溃。
苹果的 NSDocument 文档不包含任何有关重新打开文件的内容,所以我在那里运气不好。有没有正确的方法来做到这一点?
nsdocument ×10
cocoa ×7
objective-c ×4
macos ×3
appkit ×2
ios ×2
core-data ×1
macos-sierra ×1
nsstoryboard ×1
nswindow ×1
swift ×1
tabs ×1
uiimage ×1