如何在objective C中将QLPreviewController添加为子视图

14
可以将QLPreviewController添加到UIView作为子视图吗?
我尝试过这样做:
[self.view addSubview:previewViewController.view] 

我也调用了 reloadData

[previewViewController reloadData];

我查看了这个网址:Adding QLPreviewController as subview doesn't load PDF。但是我不理解self.pdfPreviewView是什么。

请指导我如何将QLPreviewController添加为子视图...


从iOS6开始,这已经过时了: 请参见http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/。 - Daij-Djan
2个回答

27

可以实现,见下面的代码:

QLPreviewController* preview = [[QLPreviewController alloc] init];
preview.dataSource = self;
preview.delegate = self;
[self addChildViewController:preview];//*view controller containment
//set the frame from the parent view
CGFloat w= self.quickLookView.frame.size.width; 
CGFloat h= self.quickLookView.frame.size.height;
preview.view.frame = CGRectMake(0, 0,w, h);
[self.quickLookView addSubview:preview.view];    
[preview didMoveToParentViewController:self];
//save a reference to the preview controller in an ivar
self.previewController = preview;

2
你好,感谢您的回复。我有几个问题..因为我是iOS初学者。您说要为previewController创建ival。那么数据类型是UIViewController/QLPreviewController?quickLookView是什么意思,请给我更多细节。+1 - Naga Harish M
1
@NagaHarishMovva:只需在您的对象中创建一个名为previewController的UIViewController属性 - 这应该就可以了 ;) - arnoapp
1
只有在父控制器的视图已经在屏幕上可见时,此方法才能正常工作。如果您尝试从父控制器的loadView方法将QLPreviewController添加为子控制器,则无法正常工作。您必须从viewDidAppear中调用它。 - Philippe Leybaert
在我的情况下,在iOS 10上,工具栏和导航栏显示在预览(UIView)内部。我该如何从预览(UIView)中移除这些栏? - Ramis
@Ramis:你找到移除iOS 10中的条形图的解决方案了吗? - Jacob
显示剩余3条评论

4

Swift 3.x

private var pVC: QLPreviewController?

override func viewDidLoad() {
    super.viewDidLoad()
    // I do not not why, but it needs to be setup after delay.
    DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: setupPreview)
}

private func setupPreview() {
    if (pVC != nil) { return }

    let preview = QLPreviewController()
    preview.dataSource = self
    preview.delegate = self

    preview.view.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: previewView.frame.size)
    previewView.addSubview(preview.view)

    preview.didMove(toParentViewController: self)
    pVC = preview
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接