Justin808
Justin808

Reputation: 21522

QLPreviewController is under the navbar and tabbar

How do I make it so that I can see everything, the contents of the QLPreviewController is under the navbar.

iOS Screenshot

The document looks like this in TextEdit.

TextEdit Screenshot

I'm loading things with this code:

@implementation TextViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.preview = [[QLPreviewController alloc] init];
    self.preview.dataSource = self;
    self.preview.delegate = self;
    [self addChildViewController:self.preview];

    [self.view addSubview:self.preview.view];
    [self.preview didMoveToParentViewController:self];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)viewDidAppear:(BOOL)animated
{
    [self.preview refreshCurrentPreviewItem];
}

- (void) loadData: (NSString *)name;
{
    assert(![name isEqualToString:@""]);

    // Load the plist
    NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
    NSString *path = [resourcePath stringByAppendingPathComponent:name];
    self.info = [[NSDictionary alloc] initWithContentsOfFile:path];

    NSString *rtfPath = [resourcePath stringByAppendingPathComponent:[self.info valueForKey:@"transcript"]];
    self.url = [NSURL fileURLWithPath:rtfPath];
    [self.preview refreshCurrentPreviewItem];
}

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index
{
    if ([QLPreviewController canPreviewItem:self.url]) {
        return self.url; // This always returns
    }

    return nil; // This line is never executed
}

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

@end

How do I go about making the QLPreviewController take the navbar into account?

Upvotes: 1

Views: 354

Answers (1)

Mookker
Mookker

Reputation: 29

Do something like this before inserting as child view.

CGFloat w= self.view.frame.size.width;
CGFloat h= self.view.frame.size.height;
self.preview.view.frame = CGRectMake(0, 0,w, h);

Upvotes: 1

Related Questions