Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Macos NSButton在自定义NSCell中绘制,但实际上不可单击_Macos_Cocoa_Nstableview_Nsbutton_Nscell - Fatal编程技术网

Macos NSButton在自定义NSCell中绘制,但实际上不可单击

Macos NSButton在自定义NSCell中绘制,但实际上不可单击,macos,cocoa,nstableview,nsbutton,nscell,Macos,Cocoa,Nstableview,Nsbutton,Nscell,我有一个NSTableView,其中包含我的自定义NSCell子类IconCell IconCell包含三个元素:图像、文本和按钮 这是我的绘图代码的简化版本(closeButton是按钮): 绘图零件工作正常,并产生如下结果: 这就是我想要的 此外,我希望在用户与单元格交互时发生以下两种情况之一:如果用户单击单元格上除关闭按钮以外的任何位置,它应该执行action a。如果用户单击关闭按钮,它应该执行操作b 我遇到的问题是关闭按钮似乎“不可见”——如果我单击它,它不会移动(而一个工作按钮应该

我有一个NSTableView,其中包含我的自定义NSCell子类IconCell

IconCell包含三个元素:图像、文本和按钮

这是我的绘图代码的简化版本(
closeButton
是按钮):

绘图零件工作正常,并产生如下结果:

这就是我想要的

此外,我希望在用户与单元格交互时发生以下两种情况之一:如果用户单击单元格上除关闭按钮以外的任何位置,它应该执行
action a
。如果用户单击关闭按钮,它应该执行
操作b

我遇到的问题是关闭按钮似乎“不可见”——如果我单击它,它不会移动(而一个工作按钮应该显示其按下状态),一般来说,它的行为就像它不在那里一样,
actionA
被触发,而不是
actionB

这是我设置两个操作的方式:

[tableView setAction:@selector(actionA)];


我做错了什么?

你只是在画单元格中按钮的图片。这与将实际按钮放入单元格不同

单元格不是完整视图,因此这比您一开始想象的要复杂。如果您真的必须对单元格执行此操作,这里将对此进行解释:


但是。。。如果您可以将自己限制在10.7+,他们已经添加了基于视图的TableView。这些操作要简单得多,因为您可以在
NSTableViewCellView
中放置一个完整的
NSButton
。这一点在本节中进行了解释。如果您可以将自己限制在10.7+,则强烈建议您这样做。

您只是在单元格中绘制按钮的图片。这与将实际按钮放入单元格不同

单元格不是完整视图,因此这比您一开始想象的要复杂。如果您真的必须对单元格执行此操作,这里将对此进行解释:


但是。。。如果您可以将自己限制在10.7+,他们已经添加了基于视图的TableView。这些操作要简单得多,因为您可以在
NSTableViewCellView
中放置一个完整的
NSButton
。这一点在本节中进行了解释。强烈建议您将自己限制在10.7+。

事实证明,这比我想象的要复杂得多。不幸的是,我也必须在10.6上支持一些人,所以我想我必须使用第一个解决方案。谢谢事实证明,这比我想象的要复杂得多。不幸的是,我也必须在10.6上支持一些人,所以我想我必须使用第一个解决方案。谢谢
[tableView setAction:@selector(actionA)];
[closeButton setAction:@selector(actionB)];