Dans mon précédent article sur UIMenuBuilder avec MacCatalyst, je créais une entrée de menu open dans le menu Fichier par défaut. Cette entrée lançait la fonction importfile: dans le Responder en cours. Mais je n'expliquais pas comment ouvrir le sélecteur de fichiers...
Voici le code à ajouter dans le ViewController principal :
Voici le code à ajouter dans le ViewController principal :
#pragma mark - Import File
#if TARGET_OS_MACCATALYST
- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller {
NSLog(@"documentPickerWasCancelled:");
}
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls {
NSLog(@"documentPicker:didPickDocumentsAtURLs:");
UIApplication *app = [UIApplication sharedApplication];
for(NSURL *url in urls) {
if([app.delegate application:app openURL:url options:@{ }]==NO) {
[Usefull AlertWithTitle:url.description
andMessage:@"Le fichier ne peut pas être installé."
andController:self
forAction:nil];
}
}
}
-(void)importfile:(id)sender {
NSLog(@"importfile:");
// dismiss le viewController visible recursivement jusqu'à retourner à CE viewController (self).
if([self presentedViewController]) {
[[self presentedViewController] dismissViewControllerAnimated:YES completion:^{ [self importfile:sender]; }];
return;
}
// Là le viewController visible est le nôtre (self).
UIDocumentPickerViewController *browser = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[ @"fr.lantranet.LectureFlash" ] inMode:UIDocumentPickerModeImport];
assert(browser);
browser.delegate = self;
browser.allowsMultipleSelection = NO;
browser.modalPresentationStyle = UIModalPresentationFormSheet;
browser.directoryURL = [NSURL fileURLWithPath:NSHomeDirectory()];
[self presentViewController:browser animated:YES completion:nil];
}
#endif
Commentaires