2017-06-19 72 views
1

這一直是當天最愚蠢的問題,但我只是沒有得到它。 我創建了一個Quicklook,顯示得很好。當我點擊完成按鈕時,它會重新出現。如何攔截完成按鈕?或者更一般地說,控制什麼顯示在我認爲是一個導航欄。這裏是相關的代碼:Quicklook後處理完成按鈕,目標C

- (void)viewDidAppear:(BOOL)animated 
{ 

    [super viewDidAppear:animated]; 

    /* 
    * get the path to the pdf resource. 
    */ 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"article" ofType:@"pdf"]; 
    NSURL *docURL = [NSURL fileURLWithPath:path]; 


    /* 
    * create the Quicklook controller. 
    */ 

    QLPreviewController *qlController = [[QLPreviewController alloc] init]; 

    PreviewItem *item = [[PreviewItem alloc] initPreviewURL:docURL WithTitle:@"Article"]; 
    self.pdfDatasource = [[PDFDataSource alloc] initWithPreviewItem:item]; 
    qlController.dataSource = self.pdfDatasource; 


    /* 
    * present the document. 
    */ 

    [self presentViewController:qlController animated:YES completion:nil]; 
} 

我假設我缺少一些明顯的東西。

謝謝 肯

回答

0

你有沒有嘗試以你的ViewDidAppear代碼要viewDidLoad中?當你點擊完成按鈕時,除了ViewDidLoad外,控制器的所有視圖都會再次加載。所以快速查看視圖再次出現。試試吧

+0

我得到這樣的警告和一個空白屏幕: 2017年6月19日09:24:57.080342-0700警告:嘗試以呈現其視圖不在窗口層次! (所以我從來沒有機會擊中完成按鈕)。謝謝,雖然。 – user938797

+1

好吧,所以我看着你面臨的問題。你可以做一件事情來傳遞一個布爾值來顯示viewDidAppear中的quicklook。在viewDidAppear中編寫代碼,但在bool中檢查Value在viewDidLoad中將bool值設置爲1,這樣視圖就會出現,當視圖出現在click of done按鈕上時,將bool值設置爲0,這樣viewDidAppear中的代碼將不會再次加載直到你不刷新布爾爲1,你可以在任何時候使用這個布爾爲1,就像顯示一個新的pdf時布爾爲1一樣。 –

+0

是的,我認爲這樣會有效,但我必須相信有「正確的「答案可能與代表有關。我現在就給你提供一個鏡頭。謝謝。 – user938797

0

訣竅是將所有東西都回滾到原始的viewcontroller中。這樣,當我點擊完成按鈕時,它會回到原來的viewcontroller,這正是我想要的。所以我沒有一個單獨的類,而是將這些調用合併到我的主視圖控制器中。我懷疑還有一種巧妙使用代表的方法,但如果其他人遇到同樣的問題,這是一個適合我的解決方案。

感謝您的關注和幫助。 肯