Я добавил NSOpenPanel для выбора папок.Но я хочу добиться следующих случаев:
1. Запретить пользователю выбирать уже выбранные папки.
2. Запретить пользователю выбирать подпапки, если родительская папка уже выбрана.
Или, если описанные выше случаи невозможны, как можно проверить, выбрана ли родительская папка текущей выбранной папки или нет?
//Panel related code
aPanel = [NSOpenPanel openPanel];
[aPanel setMessage:@"Choose folders"];
[aPanel setPrompt:@"Select"];
[aPanel setNameFieldLabel:@"Location"];
[aPanel setAllowsMultipleSelection:YES];
[aPanel setCanChooseDirectories:YES];
[aPanel setDirectoryURL:[NSURL fileURLWithPath:NSHomeDirectory()]];
[aPanel setDelegate:self];
dispatch_async(dispatch_get_main_queue(), ^
{
[aPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSInteger result)
{
if (result == NSFileHandlingPanelOKButton)
{
for (NSURL *folderPath in [aPanel URLs])
{
[files addObject:[folderPath path]];
}
}
}];
});
//Filter method handle
- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url {
BOOL result = YES;
for (NSString *urlPath in files) {
result = result && ( [url.path hasPrefix:urlPath] || [urlPath isEqualTo:url.path] ? NO : YES);
}
return result;
}
Здесь файлы - старый список выбранных папок с путями типа строки