从菜单中选择项目时,自定义 NSCell 内的 NSPopUpButtonCell 不会更改选择

发布于 2024-07-24 05:36:54 字数 434 浏览 13 评论 0原文

我在自定义 NSCell 中有一个 NSPopUpButtonCell,我用来

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView

在单击它时生成弹出菜单。

我还在自定义单元格中重写了 copyWithZone: 来复制 popUpCell 实例变量,以便表视图中的每一行都有自己的弹出单元格。

我的问题是,虽然菜单弹出得很好,并且您可以从菜单中选择一项,但当选择一项时,单元格不会更改其所选项目以匹配从菜单中选择的项目。

但是,如果我用复制单元格的区域注释掉副本中的行,那么就选择而言,它的行为正常(更改以匹配所选项目,尽管每一行都将具有相同的所选项目)。

有谁知道这是为什么,或者更重要的是,我该如何解决它?

I have an NSPopUpButtonCell inside a custom NSCell and I'm using

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView

to produce the pop up menu when it's clicked.

I have also overridden copyWithZone: in my custom cell to copy the popUpCell instance variable so that each row in my table view has its own pop up cell.

My problem is that although the menu pops up just fine, and you can select an item from the menu, when an item is selected the cell does not change its selected item to match the chosen one from the menu.

However, if I comment out the line in copy with zone which copies the cell, then it behaves properly as far as selection goes (changing to match the selected item, although every single row will then have that same selected item).

Does anybody know why this is, or more to the point, how I can fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

祁梦 2024-07-31 05:36:54

您是否尝试过使用

–trackMouse:inRect:ofView:untilMouseUp: 

而不是

startTrackingAt:inView:

Have you tried using

–trackMouse:inRect:ofView:untilMouseUp: 

instead of

startTrackingAt:inView:

?

审判长 2024-07-31 05:36:54

我建议不要复制单元格,而是使用:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

...在绘制每行之前使用正确数据设置单元格的委托方法。

I'd suggest not copying the cell and instead using the:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

...delegate method to set up the cell with the correct data before each row is drawn.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文