2016-08-25 4 views
0

Quicklookを既存のNSTableViewに簡単に実装する例を探し求めましたが、サンプルプロジェクトを見つけている間に、自分のスキルを超えて逆アセンブルおよびダクト私のプロジェクトに既存のNSTableViewにQuicklookを追加する

は、私はボタンが

[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil]; 

を使用して押されたときにクイックルックウインドウが表示されるように得ることができますしかし、私は窓がファイルが移入されるように、データソースを設定する方法についてのわずかな手掛かりを持っていません。

簡単に言えば、これを行う方法については愚かな簡単なチュートリアルはありますか?

+1

データソースの設定は 'panel.dataSource = myDatasource'と同じくらい簡単です。テーブルビューにはデータソースとデリゲートがありますか? – Willeke

+0

テーブルビューには、sqlite dbから構築された配列の内容が入力されます。 tableviewには、人口を扱う独自の代理人があります。テーブルの列の1つは、私がクイックビューにしたいファイルへのパスです...私はちょうどそれを使用するquicklookに指示する方法を見つけることができません... – julian

+0

ちょうどQLPreviewPanelDataSourceメソッドを実装します – rocky

答えて

0

QLPreviewItemプロトコルに準拠したクラスを作成し、実装

# pragma mark - QuartzPanel 

- (IBAction)togglePreviewPanel:(id)previewPanel { 
    if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) { 
     [[QLPreviewPanel sharedPreviewPanel] orderOut:nil]; 
    } else { 
     [[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil]; 
    } 
} 

- (BOOL)acceptsFirstResponder { 
    return YES; 
} 

- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel { 
    return YES; 
} 

- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel { 
    _previewPanel = panel; // create a property to hold a reference to your panel 
    panel.delegate = self; 
    panel.dataSource = self; 
} 

- (void)endPreviewPanelControl:(QLPreviewPanel *)panel { 
    _previewPanel = nil; 
} 

#pragma mark - QLPreviewPanelDataSource 

- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel { 
    return self.previewItems.count; // Items to preview of your custom subclass you created above 
} 

- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index { 
    return (id<QLPreviewItem>)self.previewItems[index]; 
} 


#pragma mark - QLPreviewPanelDelegate 

- (BOOL)previewPanel:(QLPreviewPanel *)panel handleEvent:(NSEvent *)event { 
    // redirect all key down events to the table view 
    if ([event type] == NSKeyDown) { 
     NSString *key = [event charactersIgnoringModifiers]; 
     if ([key isEqual:@" "]) { 
      [self togglePreviewPanel:self]; 
     } 
     return YES; 
    } 
    return NO; 
} 
- (NSURL *)previewItemURL { 
    // <Return File URL for file you want to preview> 
} 

は、プレビューパネルがQLPreviewPanelDataSource, QLPreviewPanelDelegateを実装し、実装に以下を追加トリガあなたのクラスを持っています
+0

"プレビューパネルをトリガするクラス "?テーブルビュー、デリゲート、データソース、コントローラ、ボタンなど(私は理解し、学習しようとしています) – Willeke

+0

あなたのボタンからマップされたIBActionがクイックルックに押し付けられているクラス –

関連する問題