2012-07-09 51 views
0

我正在使用QLPreviewController来显示一组文件。然而,它只显示第一个,我似乎无法滑动或做任何事情来显示第二个。我究竟做错了什么?我必须手动设置吗?如果是这样 - 我该怎么做呢?QLPreviewController只显示一个文件

这是从我AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // normal viewcontroller init here 

    [self showPreview] ; 

    return YES; 
} 

NSArray* documents ; 
QLPreviewController* preview ; 

- (void) showPreview 
{ 
    documents = [[NSArray alloc] initWithObjects: @"photo" , @"photo2" , nil ] ; 

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

    preview.view.frame = [[UIScreen mainScreen] bounds]; 
    //save a reference to the preview controller in an ivar 
    // self.previewController = preview; 
    //refresh the preview controller 
    [preview reloadData]; 
    [[preview view] setNeedsLayout]; 
    [[preview view] setNeedsDisplay]; 
    [preview refreshCurrentPreviewItem]; 
    preview.view.userInteractionEnabled = YES; 

    //add it 
    [self.viewController.view addSubview:preview.view]; 
} 

我也宣称在同一AppDelegate.m文件中的两个回调函数:

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index 
{ 
    NSString* filename = [documents objectAtIndex:index] ;  // @"photo" ; 
    NSURL* returnURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: filename ofType:@"jpg" ]] ; 

    return returnURL ; 
} 

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller 
{ 
    return [documents count]; 
} 

回答

1

你显示它错了。 QLPreviewController是一个UIViewController,这意味着你基本上有两种方式显示它的:

  1. 推到你的UINavigationController。
  2. 以模态方式显示它(可以使用或不使用UINavigationController来完成 - 取决于您是否需要导航栏)。

如果您选择选项2,您将获得“自由”导航箭头以在项目之间切换。 对于选项1,您需要自己创建箭头。

此以下是从QLPreviewController文档采取:

如果在列表中一个以上的项目,一个模态呈现内容(即 是,全屏)控制器显示导航箭头让用户 在项目之间切换。对于使用导航控制器推送 的快速查看预览控制器,您可以在导航栏中提供用于在导航列表中移动的按钮。