2012-07-09 48 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文檔採取:

如果在列表中一個以上的項目,一個模態呈現內容(即 是,全屏)控制器顯示導航箭頭讓用戶 在項目之間切換。對於使用導航控制器推送 的快速查看預覽控制器,您可以在導航欄中提供用於在導航列表中移動的按鈕。