我不知道我在做正确的事情,但这是我的问题:基于视图的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事件。同时,我想根据来自所表示对象的值以不同颜色绘制这些子视图。 –