2016-07-17 12 views
0

Ich verwende QLPreviewController, um eine PDF anzuzeigen. Jetzt versuche ich, Schaltflächenelemente zur Symbolleiste hinzuzufügen. Wenn ich die ToolbarItems drucke, kann ich sehen, dass sie hinzugefügt werden, aber meine Symbolleiste wird nicht angezeigt. Warum erscheint es nicht?QLPreviewController-Symbolleiste nicht angezeigt

func previewController(controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem { 


     let rightButton = UIBarButtonItem(title: "Title", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(drawCircle)) 

     let rightButton2 = UIBarButtonItem(title: "Title2", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(drawCircle)) 

     controller.setToolbarItems([rightButton, rightButton2], animated: false) 

     print(controller.toolbarItems) 

     let localUrl = String(format:"%@/%@", PDFFilePath, fileNameGroup) 
     let url = NSURL.fileURLWithPath(localUrl) 

     return url 
    } 

viewPDF = QLPreviewController() 

     viewPDF.dataSource = self 


     self.presentViewController(viewPDF, animated: true, completion: nil) 

Antwort

0

Von was ich eingegeben habe, bin ich mir nicht sicher, dass Sie die Tasten an der richtigen Position hinzufügen. Das Problem besteht darin, dass Sie einen benutzerdefinierten Ansichtscontroller erstellen und QLPreviewController als Unteransicht hinzufügen müssen. Etwas wie folgt aus:

class CustomQLViewController: UIViewController { 

    var customQL=QLPreviewController() 
    @IBOutlet weak var qlView: UIView! //defined in storyboard for QLPreviewController 

    override dynamic func viewDidLoad() { 
     super.viewDidLoad() 
     customQL.dataSource = self 
     customQL.view.frame = CGRectMake(0, 0, qlView.frame.size.width, qlView.frame.size.height) 
     qlView.addSubview(customQL.view) 
    } 

Was Sie hier sehen, ist ein View-Controller im Storyboard mit einem benutzerdefinierten hinzugefügt UIView, verwendet, um die Region zu repräsentieren, die verwendet wird durch QLPreviewController auf. Fügen Sie einfach die gewünschten Schaltflächen in das Storyboard ein und verbinden Sie ihre Steckdosen in der Klasse. Die Hauptsache hier ist, den QLPreview-Controller auf die Dimensionen der Ansicht zu setzen, die Sie im Storyboard hinzugefügt haben (zB. QlView) und hinzufügen, den Rahmen des QLPreview-Objekts auf qlView zu setzen. Der letzte Schritt wäre, QLpreview als Unteransicht in qlView hinzuzufügen.