博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
阅读量:6509 次
发布时间:2019-06-24

本文共 6358 字,大约阅读时间需要 21 分钟。

到今天实现功能, 由iTunes导入文件的应用程序, 并在此文档进行编辑的应用。

就像我们平时经常使用 PDF阅读这样的事情, 们能够自己导入我们的电子书。

以下详细介绍下实现过程。

先看效果图。

图1. 未实现功能前, iTunes截图

图2. 实现功能后, iTunes截图

图3. 实现功能后, 执行截图。

好了, 通过图片, 我们能够看到实现的效果。

功能包括: 同意通过iTunes导入文件。

能够查看沙盒下全部文件。

实现过程:

1。

在应用程序的Info.plist文件里加入UIFileSharingEnabled键,并将键值设置为YES。

2。详细代码:

ViewController.h

////  ViewController.h//  iTunesTest////  Created by Colin on 14-6-8.//  Copyright (c) 2014年 icephone. All rights reserved.//#import 
//step1. 导入QuickLook库和头文件#import
//step2. 继承协议@interface ViewController : UIViewController
{ //step3. 声明显示列表 IBOutlet UITableView *readTable;}//setp4. 声明变量//UIDocumentInteractionController : 一个文件交互控制器,提供应用程序管理与本地系统中的文件的用户交互的支持//dirArray : 存储沙盒子里面的全部文件@property(nonatomic,retain) NSMutableArray *dirArray;@property (nonatomic, strong) UIDocumentInteractionController *docInteractionController;@end
ViewController.m

////  ViewController.m//  iTunesTest////  Created by Colin on 14-6-8.//  Copyright (c) 2014年 icephone. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController@synthesize dirArray;@synthesize docInteractionController;- (void)viewDidLoad{    [super viewDidLoad];            //step5. 保存一张图片到设备document目录中(为了測试方便)    UIImage *image = [UIImage imageNamed:@"testPic.jpg"];    NSData *jpgData = UIImageJPEGRepresentation(image, 0.8);    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"testPic.jpg"]; //Add the file name    [jpgData writeToFile:filePath atomically:YES]; //Write the file            //step5. 保存一份txt文件到设备document目录中(为了測试方便)    char *saves = "Colin_csdn";    NSData *data = [[NSData alloc] initWithBytes:saves length:10];    filePath = [documentsPath stringByAppendingPathComponent:@"colin.txt"];    [data writeToFile:filePath atomically:YES];            //step6. 获取沙盒里全部文件	NSFileManager *fileManager = [NSFileManager defaultManager];	//在这里获取应用程序Documents目录里的文件及目录列表	NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);	NSString *documentDir = [documentPaths objectAtIndex:0];	NSError *error = nil;	NSArray *fileList = [[NSArray alloc] init];	//fileList便是包括有该目录下全部文件的文件名称及目录名的数组	fileList = [fileManager contentsOfDirectoryAtPath:documentDir error:&error];		self.dirArray = [[NSMutableArray alloc] init];	for (NSString *file in fileList)	{		[self.dirArray addObject:file];	}		//step6. 刷新列表, 显示数据	[readTable reloadData];}//step7. 利用url路径打开UIDocumentInteractionController- (void)setupDocumentControllerWithURL:(NSURL *)url{    if (self.docInteractionController == nil)    {        self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];        self.docInteractionController.delegate = self;    }    else    {        self.docInteractionController.URL = url;    }}#pragma mark- 列表操作- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{	return 1;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{	static NSString *CellName = @"CellName";	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellName];	if (cell == nil)	{		cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellName];		cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;	}		NSURL *fileURL= nil;	NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);	NSString *documentDir = [documentPaths objectAtIndex:0];	NSString *path = [documentDir stringByAppendingPathComponent:[self.dirArray objectAtIndex:indexPath.row]];	fileURL = [NSURL fileURLWithPath:path];		[self setupDocumentControllerWithURL:fileURL];	cell.textLabel.text = [self.dirArray objectAtIndex:indexPath.row];	NSInteger iconCount = [self.docInteractionController.icons count];    if (iconCount > 0)    {        cell.imageView.image = [self.docInteractionController.icons objectAtIndex:iconCount - 1];    }    	return cell;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{	return [self.dirArray count];}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{	QLPreviewController *previewController = [[QLPreviewController alloc] init];    previewController.dataSource = self;    previewController.delegate = self;        // start previewing the document at the current section index    previewController.currentPreviewItemIndex = indexPath.row;    [[self navigationController] pushViewController:previewController animated:YES];    //	[self presentViewController:previewController animated:YES completion:nil];}#pragma mark - UIDocumentInteractionControllerDelegate- (NSString *)applicationDocumentsDirectory{	return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];}- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)interactionController{    return self;}#pragma mark - QLPreviewControllerDataSource// Returns the number of items that the preview controller should preview- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController{	return 1;}- (void)previewControllerDidDismiss:(QLPreviewController *)controller{    // if the preview dismissed (done button touched), use this method to post-process previews}// returns the item that the preview controller should preview- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx{    NSURL *fileURL = nil;    NSIndexPath *selectedIndexPath = [readTable indexPathForSelectedRow];	NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);	NSString *documentDir = [documentPaths objectAtIndex:0];	NSString *path = [documentDir stringByAppendingPathComponent:[self.dirArray objectAtIndex:selectedIndexPath.row]];	fileURL = [NSURL fileURLWithPath:path];    return fileURL;}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
多核编程的四层境界
查看>>
Windows Phone 实用开发技巧(11):让StackPanel中的控件靠右对齐
查看>>
小记如何修改xen模块
查看>>
centos访问windowsxp共享资源指南.
查看>>
实时游戏对战引擎Photon
查看>>
C语言位操作控件属性
查看>>
nginx的安装及基本配置,及多个域名服务
查看>>
Servlet访问postgresql数据库并提取数据显示在前端jsp页面
查看>>
不改一行代码定位线上性能问题
查看>>
定义运算符
查看>>
git管理
查看>>
idea演示
查看>>
Android第三十天
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
加强Eclipse代码自动提示的方法
查看>>
【HM】第4课:MySQL入门
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
lsof命令详解
查看>>