Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 单击NSActionCell时,防止在NSOutlineView中更改选择_Cocoa_User Interface_Macos - Fatal编程技术网

Cocoa 单击NSActionCell时,防止在NSOutlineView中更改选择

Cocoa 单击NSActionCell时,防止在NSOutlineView中更改选择,cocoa,user-interface,macos,Cocoa,User Interface,Macos,我有一个自定义NSActionCell,用于渲染NSOutlineView中某些行的某些部分。我可以接收并响应对NSActionCell的单击,但单击该单元格时选择也会发生变化。如果单击我的一个自定义NSActionCell,我希望阻止更改选择 有没有一个简单的方法可以做到这一点?回答我自己的问题: 如果要单击的单元格(随后不选择行)位于其自己的列中,则以下Apple示例非常有用: 该示例依赖于实现以下方法(在第304行的AppController.m中实现): 如果您在另一个单元格中有一个单

我有一个自定义NSActionCell,用于渲染NSOutlineView中某些行的某些部分。我可以接收并响应对NSActionCell的单击,但单击该单元格时选择也会发生变化。如果单击我的一个自定义NSActionCell,我希望阻止更改选择


有没有一个简单的方法可以做到这一点?

回答我自己的问题:

如果要单击的单元格(随后不选择行)位于其自己的列中,则以下Apple示例非常有用:

该示例依赖于实现以下方法(在第304行的AppController.m中实现):

如果您在另一个单元格中有一个单元格,您仍然可以使用该方法,但是您需要做更多的工作来确定是否在子单元格中单击了鼠标。下面的苹果示例是一个很好的逻辑示例:


NSCell始终位于单个NSTABLE列中,因为该单元格是该列的属性。要使一个单元格看起来横跨多个列,唯一的方法是将其伪造。
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item