0

QLPreviewControllerを使用して一連のファイルを表示しています。ただし、最初のものだけが表示され、スワイプしたり、2番目のものを表示するために何かをしたりすることはできません。私は何が間違っているのですか?手動で設定する必要がありますか?もしそうなら-私はそれをどのように行うのですか?

これは私の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ファイルで2つのコールバック関数を宣言しました。

- (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];
}
4

1 に答える 1

1

あなたはそれを間違って表示しています。QLPreviewController は UIViewController です。つまり、基本的に表示する方法は 2 つあります。

  1. UINavigationController にプッシュします。
  2. モーダルに表示します (これは UINavigationController の有無にかかわらず実行できます - ナビゲーション バーが必要かどうかによって異なります)。

オプション 2 を選択すると、項目を切り替えるための「無料の」ナビゲーション矢印が表示されます。オプション 1 では、自分で矢印を作成する必要があります。

以下は、QLPreviewControllerのドキュメントからの抜粋です。

リストに複数の項目がある場合、モーダルに表示される (つまり、全画面表示の) コントローラーはナビゲーション矢印を表示して、ユーザーが項目を切り替えることができるようにします。ナビゲーション コントローラーを使用してプッシュされたクイック ルック プレビュー コントローラーの場合、ナビゲーション リスト内を移動するためのボタンをナビゲーション バーに提供できます。

于 2012-07-24T12:44:43.533 に答える