【问题标题】:Can't make empty selection in NSTableView无法在 NSTableView 中进行空选择
【发布时间】:2009-08-18 22:00:05
【问题描述】:

我不知道它是怎么发生的,但是突然在我的表格视图中我不能再做一个空的选择了。就像表格视图行总是必须被选中,并且不能通过单击表格视图中的其他位置来取消选择。我可以选择不同的行,但不能选择空。

在Interface Builder 属性中为表格视图启用了空选择,所以我不知道下一步该往哪里看。我所做的一项重大更改是安装了 OS X Snow Leopard。我不确定这个问题是否与此有关。

谢谢

【问题讨论】:

  • didSelectRowAtIndexPath 的代码是什么样的?另外,这是在模拟器上还是在设备上?
  • 嗨,我没有实现那个方法。这是 OS X 开发,而不是 iPhone。

标签: objective-c cocoa interface-builder nstableview


【解决方案1】:

我遇到了同样的问题(我使用的是 XCode 4.2,但针对 10.6sdk 进行编译)。 NSOutlineView::deselectAll 只是没有取消选择。我有一个相当复杂的 NSOutlineView ,它表现出相同的行为。我查看了苹果开发者论坛和其他地方来尝试解决这个问题。但是最终解决这个问题对我来说非常简单,我可以使用:

- (void) myDeselectAll
{
   [self selectRowIndexes:[NSIndexSet indexSet] byExtendingSelection:NO];
}

【讨论】:

  • 如果您支持 10.6,则需要执行此操作而不是取消全选。您需要下载 10.6sdk 并将其设置为您的基本 sdk 以查看此错误。
【解决方案2】:

尝试使用 setter 方法 setAllowsEmptySelection: 以编程方式执行此操作。或者,尝试在 IB 中禁用空选择,保存,然后启用它,从而节省更多时间。这可能会解决它。

还要确保 tableView:shouldSelectRow: 中的某些内容不会阻止您(前提是您已实现此委托方法)。

【讨论】:

  • 我已经尝试了这两种方法,包括以编程方式设置它,但问题仍然存在。除了一些用于拖放的方法外,我没有任何用于表格视图的委托方法。
  • 愚蠢的问题,但你确实有插座,对吧? :) 无论如何,检查数组控制器的属性,如果你正在使用一个(就像彼得霍西建议的那样)。
【解决方案3】:

这有点老了,但对于那些需要答案的人来说: 使用界面生成器并标记阵列控制器。删除复选标记“避免空选”。 如果不这样做,请为阵列控制器创建一个插座。这里我称它为 DocumentArrayController。

然后清空选择:

 [_DocumentArrayController removeSelectionIndexes:
      [_DocumentArrayController selectionIndexes]]; 

【讨论】:

    【解决方案4】:

    您的列是否绑定到数组控制器?如果是,请检查控制器的属性。

    【讨论】:

    • 是的,阵列控制器的“避免空选择”属性被选中,我取消选中它然后再次尝试但仍然不起作用。
    【解决方案5】:

    我不能多说:这似乎是 10.6 的问题

    【讨论】:

    • 很抱歉这么说,但是通过询问有关尚未发布且您处于 NDA 下的操作系统的问题,您有什么期望。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多