Как открыть браузер файлов и выбрать файл .pdf в ios - PullRequest
2 голосов
/ 29 марта 2012

Как открыть файловый браузер при нажатии кнопки в моем приложении в iphone. Он должен показывать файлы с расширением .pdf. И он должен быть сохранен в локальной базе данных. Например, если мы Если вы хотите отправить электронное письмо на xyz, мы прикрепляем некоторые файлы, если мы хотим отправить файлы. Если мы нажмем кнопку прикрепить файл, он покажет файл explorer. Таким же образом должен открываться проводник, если пользователь нажимает Кнопка в iphone. Пожалуйста, помогите мне из этого.

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Я сделал нечто подобное с моим приложением IOS.Поскольку IOS не имеет (я думаю) файлового браузера, и вам, в целом, разрешено использовать папку «Документы» вашего приложения, только когда он нажимает, чтобы прикрепить файл, я открываю UIPopoverController и показываю ему все файлы с расширением Iхочу.В моем случае это были файлы .csv, и я использую этот алгоритм:

        _data= [[NSMutableArray alloc] init];
    NSString *documentsPath= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSError *error;
    NSArray* files= [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error];
    NSRange range;

    for (NSString* file in files) {
        range = [file rangeOfString:@".csv" 
                            options:NSCaseInsensitiveSearch];
        if (range.location!= NSNotFound) {
            [_data addObject:file];
        }
    }

Где _data - это массив, который я использую в tableView, чтобы узнать все имеющиеся у меня файлы CSV.Если вы хотите сделать это как файловый браузер, покажите каталоги и дайте пользователю рекурсивно просматривать файлы в каталогах.Источник данных моей таблицы:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_data count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell==nil) {
    cell= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}    
cell.textLabel.text=[_data objectAtIndex:indexPath.row];    
return cell;
}

Надеюсь, это поможет вам

0 голосов
/ 21 марта 2018

Прямо сейчас, с помощью приложения «Файлы» вы можете выбирать из всех файлов в iCloud или любом подключенном облачном хранилище, например, на Google Диске и т. Д.

import MobileCoreServices

class ViewController: UIViewController, UINavigationControllerDelegate, UIDocumentPickerDelegate {

    func navigateToImportFile() {
        var types: [String] = [String]()

        // Restrict only to PDF, you can use any type you want here like audio, video, texts etc
        types.append(String(kUTTypePDF))

        let documentPickerController = UIDocumentPickerViewController(documentTypes: types, in: .import)
        documentPickerController.delegate = self
        present(documentPickerController, animated: true, completion: nil)
    }


    /// Called when pdf to import is selected
    func documentPicker(_ controller: UIDocumentPickerViewController,
              didPickDocumentAt url: URL) {

        print("Selected URL: \(url)")

        // Dismiss this view
        dismiss(animated: true, completion: nil)

        if let fileData = try? Data(contentsOf: url) {
            // Here is data of your PDF file
        }

    }

}

Это как-то знакомо файловой системе и позволяет пользователю получить доступ к любому файлунужно, пока они хранят его где-то в облаке.

...