我的应用程序一直在使用QLPreviewController来显示所有类型的文件,在iOS 5.x中,它似乎很好.
现在,在iOS 6.0中,我收到一个错误,它显示了控制器,但有一个恒定的加载指示器,从来没有实际加载任何东西.
日志中的错误是:找不到已加载代理的预览项:<QLPreviewItemProxy:0x8dbf480> - file://localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/E6A58F8D-71F3-4C7A -B16E-4BA017E318E5 /文档/温度// Welcome.docx
其他人在iOS 6.0中遇到此问题或其他问题吗?或者有什么尝试的建议?我已经通过iPhone和iPad尝试了它,同时推动控制器并呈现它.
编辑:还注意到有问题的URL(他们说的那个是坏的)不仅以file://而是file:// localhost开头,而原始文件只是以实际路径开始(即:file:///用户).
当我将QLPreviewController添加为childviewcontroller时,我无法隐藏正确的缩略图栏.我正在使用以下代码:
#import <QuickLook/QuickLook.h>
-(void)viewDidLoad
{
if ([QLPreviewController canPreviewItem:[[NSBundle mainBundle] URLForResource:@"myFile" withExtension:@"pdf"]])
{
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
[self addChildViewController:previewController];
[viewQuickLook addSubview:previewController.view];
[previewController didMoveToParentViewController:self];
}
}
-(NSInteger) numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
NSURL *pdfURL = [[NSBundle mainBundle] URLForResource:@"myFile" withExtension:@"pdf"];
return pdfURL;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码时,我可以隐藏缩略图栏.
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
[self presentViewController:previewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
但我不想要QLPreviewController的导航栏.
我非常感谢这里使用的教程QLPreviewController .
我正在尝试将此代码实现到我的应用程序中,并修改了从应用程序的Documents文件夹而不是Resources文件夹中显示文件(以便用户可以使用iTunes文件共享来管理文档).但是,这样做我遇到了" EXC_BAD_ACCESS"错误.
我在Documents文件夹中创建一个文件数组来生成tableview列表:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
arrayOfDocuments = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:NULL];
}
Run Code Online (Sandbox Code Playgroud)
以这种方式显示Documents文件夹中的文件列表没有问题.
使用QuickLook从列表中显示所选文件的代码是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// When user taps a row, create the preview controller
QLPreviewController *previewer = [[[QLPreviewController alloc] init] autorelease];
// Set data source
[previewer setDataSource:self];
// Which item to preview
[previewer setCurrentPreviewItemIndex:indexPath.row];
// Push new viewcontroller, previewing the document
[[self navigationController] pushViewController:previewer …Run Code Online (Sandbox Code Playgroud) 我知道你可以使用QLPreviewController来预览文档,但任何人都有一个整洁的解决方案来启用手势(向右滑动:向左)并保留文档缩放/导航.
有人建议我们可以使用水平表视图,但初始实现提出了类似的导航问题.
任何想法或建议表示赞赏.
我已经将自定义颜色设置为QLPreviewController的导航栏,但问题是我想在QLPreviewController中使用深色的导航栏,即使我已将导航栏半透明属性设置为否但我不知道为什么它不起作用
我希望它像下面的图像

但它显示像这个图像

QLPreviewController *previewer = [[QLPreviewController alloc] init];
// Set data source
[previewer setDataSource:self];
[previewer setDelegate:self];
// Which item to preview
[previewer setCurrentPreviewItemIndex:index];
[previewer.view addGestureRecognizer:singleTap];
previewer.navigationController.navigationBar.translucent = NO;
previewer.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent=NO;
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
[self.navigationController pushViewController:previewer animated:TRUE ];
Run Code Online (Sandbox Code Playgroud)
即使我也尝试过这样但它也没有用
- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
// Break the path into it's components (filename and extension)
// Use the filename (index 0) and the extension (index 1) to get path
//lblFileName.text=[strFileName stringByReplacingOccurrencesOfString:@"movefile" withString:@""];
// For navigation …Run Code Online (Sandbox Code Playgroud) iphone uinavigationbar uinavigationcontroller qlpreviewcontroller ios7
从QLPreviewController上的远程服务器加载文件时应使用什么方法?我们何时应该使用服务器API下载文件以将其加载到QLPreviewController上。我将QLPreviewController作为子视图添加到当前视图。我可以使用数据源方法来调用从服务器下载文件。
- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
Run Code Online (Sandbox Code Playgroud)
但是,一旦文件下载完毕,我需要重新加载QLPreviewController,该操作应在此处完成。对于图像,我想查看图库视图,以便滑动查看从服务器下载的图像。谁能指出我的任何教程来从远程服务器URL加载图像
download image-gallery nsurlconnection ios qlpreviewcontroller
我正在尝试使用QLPreviewController查看PDF,我正在努力改变一些视图属性,例如导航栏标题和视图的背景.
我能够继承QLPreviewController和更改后更改导航栏的半透明self.navigationController.navigationBar.translucency = NO;的didViewAppear方法,但是我无法做出变更navigationBar.title或backgroundColor属性self.view.backgroundColor.
当视图首次加载时,标题和背景颜色都会闪烁,但会立即被PDF标题字符串和覆盖视图背景颜色的PDF本身所取代.PDF页面显示在黑色背景上.
我想首先知道如果可以将子类化或以其他方式将背景颜色更改为我自己的自定义颜色,那么我很想知道是否有人有任何建议或知道改变背景颜色的正确解决方案.
标题值在较小程度上也是如此.
我需要使用a QLPreviewController才能在我的应用程序中打开PDF和JPEG文档.我用这种方式实现了它:
-(void)openQuickLook{
QLPreviewController *preview = [[QLPreviewController alloc] init];
preview.currentPreviewItemIndex = 0;
preview.delegate = self;
preview.dataSource = self;
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:preview];
[self presentViewController:nav animated:YES completion:nil];
}
#pragma mark - Quicklook
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
return photos.count;
}
-(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{
return photos[index];
}
Run Code Online (Sandbox Code Playgroud)
当我调用该openQuickLook方法时,预览控制器显示带有编辑工具的底栏 - 类似于iOS"标记"功能.这仅在JPEG文件上发生.酒吧固定在屏幕上; 我可以选择颜色和尺寸,但我不能在图像上画任何东西.
我需要从预览视图控制器中删除此栏,但我还没有在网上找到有关此功能的任何内容.
我已经使用 UIWebView 在我的应用程序中显示 Microsoft Office 文档(Word、PowerPoint、Excel)一段时间了,但 Apple 最近已弃用 UIWebView 类。我正在尝试切换到 WKWebView,但 Word、Excel 和 Powerpoint 文档在 WKWebView 中无法正确呈现。
使用 UIWebView 显示 Excel 文档(效果很好):
let data: Data
//data is assigned bytes of Excel file
let webView = UIWebView()
webView.load(data, mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", textEncodingName: "UTF-8", baseURL: Bundle.main.bundleURL)
Run Code Online (Sandbox Code Playgroud)
尝试使用 WKWebView 做同样的事情(显示一堆无意义的字符而不是 Excel 文件):
let data: Data
//data is assigned bytes of Excel file
let webView = WKWebView.init()
webView.load(data, mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", characterEncodingName: "UTF-8", baseURL: Bundle.main.bundleURL)
Run Code Online (Sandbox Code Playgroud)
由于我的用例的性质,出于安全原因,我无法将数据保存到磁盘,因此我无法使用如下方法:
webView.loadFileURL(<#T##URL: URL##URL#>, allowingReadAccessTo: <#T##URL#>)
Run Code Online (Sandbox Code Playgroud)
我也无法使用 QuickLook (QLPreviewController),因为它再次需要 URL。
-------------------------------------------------- - …
我QLPreviewController在我的应用程序中使用并希望隐藏底部工具栏,该工具栏允许在其数据源项目中移动。有可能以某种方式做吗?
我尝试将其作为subviewof进行搜索QLPreviewController's view,但它只有一个_UISizeTrackingViewclass 子视图。据我了解,这是一个私人课程,所以我无权在那里寻找东西。
有没有什么方法可以隐藏这个工具栏,Apple 允许这样做吗?谢谢。