NSTableView绑定+委托导致数组索引错误

时间:2018-07-06 18:28:06

标签: binding delegates nstableview

我有一个基于视图的NSTableView,它使用到NSArrayController的绑定。

一旦我将委托添加到表视图中,我就会开始:

Ignoring exception raised in void run_cocoa_block(void *): *** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array

MyApp[59144:25384659] *** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array
MyApp[59144:25384659] (
    0   CoreFoundation    0x00007fff93410452 __exceptionPreprocess + 178
    1   libobjc.A.dylib   0x00007fff9601af7e objc_exception_throw + 48
    2   CoreFoundation    0x00007fff93327775 -[__NSArrayM objectAtIndex:] + 245
    3   AppKit            0x00007fff9bd7ad31 -[NSTableRowData _addViewToRowView:atColumn:row:] + 535
    4   AppKit            0x00007fff9bd7a98e -[NSTableRowData _addViewsToRowView:atRow:] + 184
    5   AppKit            0x00007fff9bd791a7 -[NSTableRowData _initializeRowView:atRow:] + 390
    6   AppKit            0x00007fff9bd77907 -[NSTableRowData _addRowViewForVisibleRow:withPriorView:] + 416

如果删除委托连接,则一切正常……从绑定的NSArrayController正确填充表,单元格/列也将获取正确的数据。

我需要代表使用

-(BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor

可能是什么原因造成的?

在应用程序的其他地方,我有一个工作表,该工作表还使用了基于视图的NSTableView和绑定,并且可以很好地与委托配合使用。

1 个答案:

答案 0 :(得分:0)

在awakeFromNib:中,我正在打电话:

[[self itemsController] setContent:[[[NSMutableArray alloc] init] autorelease]];

这在基于单元格的NSTableView中有效,但在基于视图的NSTableView中无效。我不确定为什么,但是给它一个空数组可能是在绑定发生之后,但在操作系统对其进行其他操作之前,空数组使它感到困惑。