- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在用 Swift 编写一个基于 NSDocument 的应用程序。如果应用程序未使用文档参数启动,我已将其设置为打开默认文档。
我注意到,如果我启动该应用程序然后立即打开另一个文档,比如使用“打开”或“最近”,“无标题”默认文档会保留,即使它没有被触及。
我的印象是,在此工作流程中,无标题文档被认为是“偶然的”,应该被删除。这个对吗?如果是这样,我应该手动删除此窗口,还是我忽略了某个设置?
最佳答案
您描述的行为不是自动的。有关如何处理这种情况的示例,请参阅开源 TextEdit 示例代码。具体来说,take a look在 -[DocumentController replaceTransientDocument:]
实现中。
- (void)replaceTransientDocument:(NSArray *)documents {
// Transient document must be replaced on the main thread, since it may undergo automatic display on the main thread.
if ([NSThread isMainThread]) {
NSDocument *transientDoc = [documents objectAtIndex:0], *doc = [documents objectAtIndex:1];
NSArray *controllersToTransfer = [[transientDoc windowControllers] copy];
NSEnumerator *controllerEnum = [controllersToTransfer objectEnumerator];
NSWindowController *controller;
[controllersToTransfer makeObjectsPerformSelector:@selector(retain)];
while (controller = [controllerEnum nextObject]) {
[doc addWindowController:controller];
[transientDoc removeWindowController:controller];
}
[transientDoc close];
[controllersToTransfer makeObjectsPerformSelector:@selector(release)];
[controllersToTransfer release];
// We replaced the value of the transient document with opened document, need to notify accessibility clients.
for (NSLayoutManager *layoutManager in [[(Document *)doc textStorage] layoutManagers]) {
for (NSTextContainer *textContainer in [layoutManager textContainers]) {
NSTextView *textView = [textContainer textView];
if (textView) NSAccessibilityPostNotification(textView, NSAccessibilityValueChangedNotification);
}
}
} else {
[self performSelectorOnMainThread:_cmd withObject:documents waitUntilDone:YES];
}
}
如果您还查看 -openDocumentWithContentsOfURL:display:error:
和其他一些调用上述方法的地方,您将很好地了解它们是如何替换“临时文档”的"(“无标题”文档)与打开的文档。
希望对您有所帮助。
关于swift - NSDocument 打开默认文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497218/
我喜欢 NSDocument,因为当与核心数据模型结合使用时,它可以免费为我提供具有持久数据的应用程序。但我知道,对于我的特定项目,我只会处理一份“文档”。我不需要文档架构堆栈附带的多文档支持。我仍然
当基于文档的应用程序处于事件状态并且没有打开的窗口时,会自动创建一个新的文档窗口。我想防止这种行为并显示我的“选择模板”对话框,而不是默认创建空白文档。 正如您在屏幕截图中看到的,新文档是在 NSAp
文件的保存和打开效果非常好,但是当选择“恢复到保存”时,在窗口的右侧(以前的文档)一眨眼,我的文档版本就出现了,然后只是空白副本。如果我从这个废话中恢复,副本注释会被更改,但如果我保存并重新打开文档,
我正在创建我的第一个基于 NSDocument 的应用程序。我可以从头开始创建新文档,也可以通过导入旧文件来创建新文档。 这个应用程序将允许每个文档有多个窗口,因此我将覆盖 makeWindowCon
在将 NSObject 添加到 mainmenu.xib 后,我可以使用 [NSApp delegate] 访问应用程序范围的委托(delegate)实例,并设置对象的名称更改为我的 appDeleg
我发现我的基于文档的应用程序的架构存在一个主要问题。基本上是将模型(一个简单的字符串)存储在一个全局变量中,每次字段中的文本发生变化时。我让文档将此字符串保存为数据,并使用此数据恢复重新打开的文件。
我有一个基于 NSDocument 的应用程序,我希望在重新打开文档时保存和恢复我的窗口位置。 Apple 关于此的文档非常少,但我能够拼凑的是,在某些时候,应用程序中的某些内容需要调用 NSWind
我正在用 Swift 编写一个基于 NSDocument 的应用程序。如果应用程序未使用文档参数启动,我已将其设置为打开默认文档。 我注意到,如果我启动该应用程序然后立即打开另一个文档,比如使用“打开
我需要在控制文档 View 的 NSViewController 方法中以编程方式保存基于 NSDocument 的应用程序的事件文档。菜单项通过将 save() 发送给第一响应者来完成此操作。以编程
我有一个基于 NSDocument 的 Cocoa 应用程序,我有几个辅助线程,当用户关闭文档窗口或应用程序退出时,我需要正常终止它们(等待它们运行完当前循环)。我正在使用 canCloseDocum
搜索这篇文章的标题会发现它很常见;确实,我从 Xcode 得到了这个错误。但我似乎找不到任何修复方法。我现在在运行我的程序时看到它,它似乎发生在调用 changeCountTokenForSaveOp
我正在尝试实现保存功能来保存 html 文件。目前,当我尝试保存时它会返回错误。我的代码是 - (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSStri
我的基于文档的应用程序存在内存泄漏。它启动正常,我可以打开或创建新文档,但只能打开一两次,然后应用程序崩溃。我在 Xcode 中使用了分析工具,没有任何问题。 但是,Instruments 揭示了内存
我正在开发一个基本的hello world应用程序,它将打开一个txt文档,编辑它,然后最后保存 文档。处理编辑的最佳实践是什么。 我已经通读了 Apple 的文档,但是当我检查 NSError **
我是一名尝试 Web 浏览器应用程序的新手,正在尝试使用带有 NSDocument 架构的 WebKit(如某些 WebKit 引用代码)。我让它打开一个预先设置的主页,然后将当前 URL 发布到相邻
在其文档中,我的应用程序使用了许多与文档路径相关的资源。因此,在添加 Assets 之前必须保存文档。如何强制调用 [NSDocument saveDocumentAs] ? 我设法完成了其中的一部分
如何正确检索与文档窗口关联的 NSDocument?我需要 NSDocument 作为数据源来在窗口中显示数据。 我是否必须遍历所有打开的文档并检查我的实例是否等于文档的 -windowForShee
我创建了一个基于文档的应用程序,需要打开具有特定扩展名的 xml 文本文件。当我使用 NSDocument 模板在 Xcode 中创建项目时,我指定了所需的扩展名,并且一切正常。 按照 Apple 关
我有一个 NSDocument 类,我需要在其中访问主菜单窗口,即应用程序启动时打开的主菜单窗口。当我从应用程序在该窗口中操作时,一切似乎都正常,但是当尝试从 readFromFileWrapper:
我刚刚开始进行单元测试,我想知道如何正确测试 NSDocument 子类? 在我的测试设置中,我可以初始化文档,但这并不能反射(reflect)文档在应用程序使用时的设置方式,特别是未建立 IBOut
我是一名优秀的程序员,十分优秀!