我不知道我在做正確的事情,但這是我的問題:基於視圖的NSTableView的視圖控制器
我必須使用綁定到arraycontroller基於視圖NSTableView的。
我需要對每行進行一些自定義繪圖,具體取決於表示的對象以及捕獲某些區域的點擊次數,因此爲此我需要爲每行設置一個控制器,併爲我的子視圖設置出口自定義單元格視圖,但我不明白我如何實現這一點。
如果我只是將一個對象添加到筆尖並與其建立連接,那麼我無法判斷哪個視圖正在繪製(或已被點擊)。
我不知道我在做正確的事情,但這是我的問題:基於視圖的NSTableView的視圖控制器
我必須使用綁定到arraycontroller基於視圖NSTableView的。
我需要對每行進行一些自定義繪圖,具體取決於表示的對象以及捕獲某些區域的點擊次數,因此爲此我需要爲每行設置一個控制器,併爲我的子視圖設置出口自定義單元格視圖,但我不明白我如何實現這一點。
如果我只是將一個對象添加到筆尖並與其建立連接,那麼我無法判斷哪個視圖正在繪製(或已被點擊)。
我剛剛發現有人問一個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]
在控制器上,告訴其觀點發送事件,我用自己的標識符。
您必須實現委託方法:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
它使用表格視圖來獲得對於給定的細胞(列,行)的視圖。 然後通過使用「makeViewWithIdentifier:owner:」,您可以獲得具有給定標識符和給定所有者(視圖控制器)的可重用單元。 最簡單的方法是在Interface Builder中設計單元格,併爲每個單元格設置不同的標識符。然後,「makeViewWithIdentifier:owner」方法將自動爲給定的標識符創建一個視圖。
不會與使用綁定相沖突嗎? –
你能詳細說明你想要達到的目標嗎?捕獲點擊意味着什麼?你有沒有按鈕,或者你想處理這些事件? – Suhas
我有幾個子視圖,我想處理mouseUp事件。同時,我想根據來自所表示對象的值以不同顏色繪製這些子視圖。 –