Showing posts with label Document Preview. Show all posts
Showing posts with label Document Preview. Show all posts

Wednesday, March 13, 2013

UIDocumentInteractionController Delegate MonoTouch

Sometimes you need to be able to show Documents within your application.  This is the code in Monotouch to Provide a native "Document Preview" via QuickLook referenced here:

Opening and Previewing Files


This is the code you can place in your ViewController.

                    UIDocumentInteractionController docpreview = UIDocumentInteractionController.FromUrl (NSUrl.FromFilename(path));

                    InvokeOnMainThread (delegate {
                        this.DismissViewController(true,delegate {
                        docpreview.Delegate = new Test(this);

                        docpreview.PresentPreview (true);
                    });
                    });


The Delegate made for your specific UIViewController to control behavior after the Preview Ends :

In this particular instance my ViewController I was calling the DocumentPreview from was called "FirstViewController".

public class Test : UIDocumentInteractionControllerDelegate
    {

            UIViewController viewC;
            
            public Test(UIViewController controller)
            {
                viewC = controller;
            }
            
            public override UIViewController ViewControllerForPreview (UIDocumentInteractionController controller)
            {
                return viewC;
            }
            
            public override UIView ViewForPreview (UIDocumentInteractionController controller)
            {
                return viewC.View;
            }
            
            public override RectangleF RectangleForPreview (UIDocumentInteractionController controller)
            {
                return viewC.View.Frame;
            }
            public override void DidEndPreview (UIDocumentInteractionController controller)
            {
                ((FirstViewController)viewC).PresentPrintDialog (controller.Url.Path);
            }
    }

Below is the screenshot of opening the file in the QuickLook Document Preview :