在自定义QLPreviewController
的外观时遇到问题。
我们可以通过将QLPreviewController推入导航控制器或将其呈现在ModalViewController中来显示它。由于我的navigationController的栏已进行了一点自定义(tintColor),因此我推动了QLPreviewController以保留我的配色方案。但是当我按下它时,QLPreviewController似乎有一些问题:我需要系统地调用 [qlpvc reloadData] ,以便显示我的文件。
在iOS [已编辑]中,即使使用reloadData,也不会以推送方式显示任何内容(实际上,它是以随机方式显示的)。因此,我认为仅使用可靠的Modal方法可能会很有趣。
所以我的意思是我想在ModalViewController中展示我的QLPreviewController。这样很好,但是我不能自定义viewController的外观。
例如,如果我在didSelectRowAtIndexPath
中这样做:
(我没有消息来源,所以如果我做错了请原谅)
QLPreviewController *qlpvc = [[QLPreviewController alloc] init];
qlpvc.dataSource = self; // Data Source Protocol & methods implemented of course
No need for delegate in my case so //qlpvc.delegate = self;
qlpvc.currentPreviewItemIndex = [indexPath.row];
// The following doesn't work :
[qlpvc.navigationController.navigationBar setTintColor:[UIColor redColor]];
// The following doesn't work too :
[qlpvc.modalViewController.navigationController.navigationBar setTintColor:[UIColor redColor]];
[self presentModalViewController:qlpvc animated:YES];
[qlpvc release];
tl; dr版本:如何管理自定义模态 QLPreviewController的外观?尤其是navigationBar的tintColor?
非常感谢。
最佳答案
这行得通,但是我不知道它是否会被Apple拒绝,因为它不是已发布的方法,并且可能会在将来的OS版本中中断。适用于iOS6。
添加到预览控制器数据源方法:
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
for (id object in controller.childViewControllers)
{
if ([object isKindOfClass:[UINavigationController class]])
{
UINavigationController *navController = object;
navController.navigationBar.tintColor = [UIColor colorWithRed:0.107 green:0.360 blue:0.668 alpha:1.000];
}
}
NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"MyPDFFile" ofType:@"pdf"];
return [NSURL fileURLWithPath:pathToPdfDoc];
}
关于iphone - 自定义QLPreviewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6386492/