2012-09-04 74 views
1

我不知道我在做正確的事情,但這是我的問題:基於視圖的NSTableView的視圖控制器

我必須使用綁定到arraycontroller基於視圖NSTableView的。

我需要對每行進行一些自定義繪圖,具體取決於表示的對象以及捕獲某些區域的點擊次數,因此爲此我需要爲每行設置一個控制器,併爲我的子視圖設置出口自定義單元格視圖,但我不明白我如何實現這一點。

如果我只是將一個對象添加到筆尖並與其建立連接,那麼我無法判斷哪個視圖正在繪製(或已被點擊)。

+0

你能詳細說明你想要達到的目標嗎?捕獲點擊意味着什麼?你有沒有按鈕,或者你想處理這些事件? – Suhas

+0

我有幾個子視圖,我想處理mouseUp事件。同時,我想根據來自所表示對象的值以不同顏色繪製這些子視圖。 –

回答

-1

我剛剛發現有人問一個similar question和它的答案也滿足我的需要,所以在這裏結束了任何人,這是我做的:

  • 設置我NSTableCellView控制器的代表NSTableView

  • 在我NSTableCellView子類我實現需要的方法(drawRect:mouseUp:等)和呼叫控制器各自的方法。

  • 要訪問控制器我得到的NSTableView然後將其委託像這樣:

    NSTableView *tableView = (NSTableView*)myView.superview.superview.superview; 
    MyControllerClass *controller = (MyControllerClass*)tableView.delegate; 
    [controller view:myView drawRect:dirtyRect] 
    
  • 在控制器上,告訴其觀點發送事件,我用自己的標識符。

1

您必須實現委託方法:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 

它使用表格視圖來獲得對於給定的細胞(列,行)的視圖。 然後通過使用「makeViewWithIdentifier:owner:」,您可以獲得具有給定標識符和給定所有者(視圖控制器)的可重用單元。 最簡單的方法是在Interface Builder中設計單元格,併爲每個單元格設置不同的標識符。然後,「makeViewWithIdentifier:owner」方法將自動爲給定的標識符創建一個視圖。

+0

不會與使用綁定相沖突嗎? –

相關問題