2017-03-10 7 views
1

스토리 보드에 새로운보기 컨트롤러를 만들었습니다. ListViewController에 연결했습니다. ListViewController는 aboutDict[String:Any]에 올바른 데이터를 채 웁니다. fileURLs[]가 구축되고 func numberOfPreviewItems(in: QLPreviewController) -> Int를 호출 - 디버거가 fileURLs[]은 다음과 같이 예상됩니다 보여줍니다 self.fileURLs의previewController previewItemAt가 호출되지 않습니다. iOS 10, swift 3, simulator

인쇄 설명 : ▿ 1 요소 - 0 : 파일 : /// 사용자/켄트/라이브러리/개발자/CoreSimulator/디바이스/5E23825C-DF99-455A-BEB1-F73398E7759F/데이터/용기/번들/애플리케이션/307ED7DF-C07C-4C0A-BA78-938BABE7C22C/WINSystemInfo.app/ID-51A_E_PLUS2.pdf`

하지만 func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItemfunc previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Bool이 호출되지 않습니다.

네비게이션 스택에 뒤로 버튼의 정확한 이름과 "미리보기 할 파일이 없습니다"라는 텍스트가있는 회색 페이지가있는 좋은 ViewController가 있습니다.

'뒤로'버튼을 누르면 func previewControllerWillDismiss(_ controller: QLPreviewController)이 호출됩니다. 그래서 일부의 대리자 및 데이터 소스 함수가 ​​호출되고 있습니다.

class FileViewController: QLPreviewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource { 

    var aboutDict = [String: Any]() 

    // QuickLook data 
    var fileURLs = [QLPreviewItem]() 

    // MARK: - Lifecycle 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let filename = aboutDict["filename"] as! String? 
     let filetype = aboutDict["filetype"] as! String? 

     title = aboutDict["title"] as! String? 
     dataSource = self 
     delegate = self 

     if let fileUrl = Bundle.main.url(forResource: filename, withExtension: filetype, subdirectory: nil, localization: nil) 
     { 
      let filePreview = fileUrl as QLPreviewItem 
      fileURLs.append(filePreview) 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Preview controller datasource functions 

    func numberOfPreviewItems(in: QLPreviewController) -> Int { 
     return fileURLs.count 
    } 

    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { 
     return fileURLs[index] 
    } 

    // MARK: - Preview controller delegate functions 

    func previewControllerWillDismiss(_ controller: QLPreviewController) { 
     debug("previewControllerWillDismiss") 
    } 

    func previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Bool { 
     return true 
    } 
} 

내가 무엇을 놓치고 :

나는 단순한 뭔가 빠진해야는 ...

내가 아래에있는 내 클래스 FileViewController.swift을 첨부?

감사합니다.

+0

가 해결 되었습니까? –

+0

가장 좋은 것은 버그 리포트 (bugreport.apple.com)를 제출하는 것이므로 실제로 버그인지 여부를 확인할 수 있습니다. – Raffael

+0

sebastian-roth - 여전히 작동하지 않습니다. – Kent

답변

0

난 그냥이 문제를했고 그것이 내가 QLPreviewController 내 데이터 소스를 설정하는 것을 잊었다 때문에 단순히했다 ... 당신이 그것을