Это довольно странная проблема. У меня есть таблица в приложении Cocoa, которая отображает список недавно открытых файлов. Вы можете дважды щелкнуть по записи, чтобы открыть связанный файл. Однако проблема заключается в том, что после того, как файл открывается один раз, через панель «Открыть», «Недавние документы» или через вышеупомянутую таблицу, он не может быть снова открыт, пока приложение не завершит работу и не откроется. Другие документы, однако, могут быть открыты, но после их закрытия они также не могут быть открыты.Документ какао не откроется снова после его закрытия
Это довольно странное поведение, и я не уверен, что вызывает его. Но это, конечно, раздражает. Для справки, атрибут Release on Closed
окна из Xcode ничего не делает и, если выбрано, ничего не делает. Я не могу думать о каких-либо других атрибутах, которые могут вызвать такое поведение. Для справки, вот фотография панели атрибутов:
Вот код для таблицы, которая открывает недавно открытый файл:
- (void)respondToRecentFileDoubleClick {
NSInteger clickedRow = [_recentFileBrowser clickedRow];
if (clickedRow != -1) { // We're in the row.
NSDocumentController *docControl = [NSDocumentController sharedDocumentController];
NSURL *selectedDocument = (NSURL *)[docControl recentDocumentURLs][clickedRow];
NSLog(@"Selected row %ld.", (long)clickedRow);
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:selectedDocument display:YES completionHandler:nil];
}
}
Документация openDocumentWithContentsOfURL:
говорит, что документ выиграл» t, если он уже открыт, но в этом случае все окна документа закрыты, поэтому это не может быть причиной такого поведения. И инструкция NSLog()
внутри блока if
печатает, поэтому я знаю, что код выполняется.
Кто-нибудь знает, что может вызвать эту странную проблему?
Где доказательства того, что я использую свой собственный 'WindowController'? Класс «Мой документ» является подклассом «NSDocument», а «Владелец файла» - это этот класс Document, а не оконный контроллер. Я могу попробовать ваше предложение. – SevenBits
@SevenBits - я сделал неправильное предположение о подклассе WindowController. Тем не менее, я считаю, что документ не закрывается. Для отладки вы могли бы поместить в свой обработчик завершения opendocument следующие строки: (см. Edit в ответе). – Bill