2012-09-04 43 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

不会与使用绑定相冲突吗? –

相关问题