2013-03-27 24 views
1

我有下面這段代碼添加QLPreviewController子視圖addSubview不是要求QLPreviewControllerDataSource情況下,當下線

{ 
    QLPreviewController *preview = [[QLPreviewController alloc] init]; 
    preview.delegate = self; 
    preview.dataSource = self; 
    [self addChildViewController:preview]; 
    [self.view addSubview:preview.view]; 
    [preview didMoveToParentViewController:self]; 
    self.previewController = preview; 
} 

-(NSInteger) numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller 
{ 
    return 1; 
} 

-(id) previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index 
{ 
    return self.url; 
} 

self.urlNSURL that位於NSTemporaryDirectory - 文件://localhost//.../blah .PDF

我的問題是,當我的筆記本電腦連接到互聯網,該文件顯示爲一個子視圖,但在沒有連接我的筆記本電腦,numberOfPreviewItemsInPreviewController & previewItemAtIndex不會被調用。

  • 我試過了一個簡單的視圖控制器的香草程序,它似乎工作正常。 (我的應用比這更復雜)。
  • 當我嘗試將文檔呈現爲模式視圖時,無論模擬器是否連接到互聯網,似乎都可以工作。 [self presentViewController:preview animated:NO completion:nil]; - >始終如一地工作。

我需要得到子查看在線&離線模式,這將是偉大的,如果有人可以幫助!

+0

嘗試使用此鏈接爲我工作 http://stackoverflow.com/questions/8493419/how-to-add-qlpreviewcontroller-as-subview-in-objective-c – kolaveri 2013-05-17 07:08:46

回答

2

您可能會遇到奇怪的行爲,因爲QLPreviewController的視圖不能被嵌入到另一個視圖中。從QLPreviewController class reference概述:

要顯示快速查看預覽控制器,你有兩個選擇:你可以使用一個UINavigationController對象推入視圖,或可模態提交,全屏幕,使用presentModalViewController:動畫:方法它的父類UIViewController。

說了這麼多,你可以嘗試:

  1. 強制QLPreviewController(重新)顯示其內容。嘗試將[self.previewController reloadData];添加到第一個方法的末尾。這應該強制數據源方法觸發。

  2. 強制視圖「刷新」它的子視圖:[self.view setNeedsLayout](這實際上可能會強制重載數據,如第一個選項)。

祝你好運!

+0

謝謝!我不得不強迫viewDidAppear來使它工作,而且這對我來說似乎很好。 – n915 2013-03-28 18:23:23

+0

謝謝。被困在這個問題很久,[self.previewController reloadData]完美地爲我工作。 – nitz19arg 2013-12-27 07:05:46