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/2/django/24.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 tableCellView中的NSButton:如何使用;“动作调用”;对于基于视图的NSTableView/NSArrayController_Cocoa_Core Data_Interface Builder_Nstableview_Nsarraycontroller - Fatal编程技术网

Cocoa tableCellView中的NSButton:如何使用;“动作调用”;对于基于视图的NSTableView/NSArrayController

Cocoa tableCellView中的NSButton:如何使用;“动作调用”;对于基于视图的NSTableView/NSArrayController,cocoa,core-data,interface-builder,nstableview,nsarraycontroller,Cocoa,Core Data,Interface Builder,Nstableview,Nsarraycontroller,对于基于视图的NSTableView/NSarrayController:如何使用tableCellView中NSButton的“操作调用”来更改实体的属性 我有以下设置: 具有一列的“基于视图”NSTableview 使用“实体模式”并绑定到核心数据实体的NSarrayController 我想使用按钮的操作调用来更新实体。例如,将“bool”属性设置为true 如果我只是使用“模型密钥路径”并将其设置为objectValue.Escape,则该按钮将被禁用。要澄清我的问题: 如果我的数

对于基于视图的NSTableView/NSarrayController:如何使用tableCellView中NSButton的“操作调用”来更改实体的属性

我有以下设置:

  • 具有一列的“基于视图”NSTableview
  • 使用“实体模式”并绑定到核心数据实体的NSarrayController

我想使用按钮的操作调用来更新实体。例如,将“bool”属性设置为true


如果我只是使用“模型密钥路径”并将其设置为objectValue.Escape,则该按钮将被禁用。

要澄清我的问题:

如果我的数据源有另一个客户端,例如通过web服务连接,我想触发一个事件。我将使用实体属性通知客户机。因此,我在tableCellView中添加了一个按钮

我从一个NSTableView和一个连接到核心数据实体的NSArrayController作为对象控制器开始。文本字段、图像、复选框和弹出按钮在绑定到控件后立即工作。但我没有找到绑定“按钮”的可行解决方案(我试图对控件、表、单元格视图和按钮进行子类化,但没有成功)

最后,我切换到action/delegate方法。使用方法rowForView:itemAtRow:representObject:可以修改实体的属性


我不喜欢这种不雅观的解决方案(大纲视图/分离代码)。如果有arrayControl的解决方案,请告诉我。

我可以通过在按钮本身(NSTableCellView中的view类)上设置一个操作,然后将NSTableView的委托设置为实现选择器的类来实现此功能。然后它就会按预期工作。

还是应该使用“发送操作”?或者忘记nsarraycontrol并使用数据源?如果我对委托使用“Send action”(例如“petEscaped:”),我只获取发送者id(按钮))。由于该行未被选中(很奇怪,不是吗),我没有机会找到并访问该实体。我找到的解决我的问题的最佳SDK示例是TableViewPlayder,其中使用了OutlineView中的按钮。令我恐惧的是,在本例中使用了一个带有数据源绑定的“自制”控件。这将导致大约1000行额外的代码只用于UI处理(从演示中聚合)和另一个用于核心数据处理的控制类。(如TableView示例中所示)