6

我正在使用基于视图的表格,并且我想为单元格视图中的元素创建一个出口。虽然我无法让插座连接......它总是nil

具体来说,我有NSProgressIndicator一个表格单元格,并希望在代码中对其进行操作。

这是我到目前为止所拥有的:

我创建了 的子类NSTableView,具有相应的插座属性:

@interface MyTableCellView : NSTableCellView
@property IBOutlet NSProgressIndicator *myProgressIndicator;
@end

@implementation MyTableCellView
-(void)awakeFromNib
{
    // _myProgressIndicator is nil!
}
@end

我已经在笔尖中设置了自定义类。通过下拉列表NSTableCellView替换现有的。MyTableCellView

在这一点上,一些观察:

  • 如果我Ctrl+单击并拖动进度指示器以连接此插座,则不显示。在此处输入图像描述 在此处输入图像描述

  • 同样,如果我尝试Ctrl使用助手编辑器+单击并拖动进度指示器,我只能通过绑定连接到属性。它不认为这是一个有效的出口。在此处输入图像描述

  • 但是,此插座显示在侧边栏上,并警告说它不存在:在此处输入图像描述

  • 我知道MyTableCellView正在被使用。Breakpoint onawakeFromNib确认了这一点,并确认_myProgressIndicatornil.

这是一个沙盒项目,几乎没有我所描述的多。

那么,如何从代码中访问此进度指示器?

4

2 回答 2

2

我不相信你应该那样做;反而:

  1. 修改表视图的数据源使用的模型对象以填充表视图。
  2. 调用表视图reloadData(或更好reloadDataForRowIndexes:columnIndexes:)。

因此,您应该只需要一个表视图的出口来执行此操作,并且表视图的单元格对象的任何修改都应该在表视图委托和/或数据源方法中完成。

于 2014-01-15T11:47:03.493 回答
1

如问题中所述,在Interface Builder中连接插座的常用方法不起作用(可能在最近的Xcode版本中已修复,我仍在使用早于6的版本)。无论如何,它确实通过 Connections Inspector 工作。

  1. 在 NSTableCellView 的子类中创建一个 IBOutlet。
  2. 在您的 XIB 中,从 Identity Inspector 将 NSTableCellView 更改为您的子类。
  3. 在 Connections Inspector 中,从您的插座拖动到 View 对象。
于 2016-08-23T05:57:52.657 回答