无法为NSTableView设置引用插座

时间:2014-01-14 17:42:58

标签: objective-c xcode macos nstableview

我正在尝试将NSTableView的数据源/委托/引用插座设置为我的主.xib的外部类。出于某种原因,我无法从我的Xib Ctrl+Drag创建.h文件来创建引用。到目前为止,这是我的代码:

table1.h

@interface table1 : NSTableView

@property (strong) NSArray* tableData;

@end

table1.m

- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

    [cellView.textField setStringValue:[self.startupTypes objectAtIndex:row]];

    return cellView;
}

- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
    return [self.startupTypes count];
}

- (void)viewDidMoveToWindow {
    self.startupTypes = @[@"Test Data 1", @"Test Data 2"];
}

然后我打开了我的.xib文件,将表类设置为table1,并尝试从表中Ctrl+Drag.h文件来创建插座。但它不会让我创建连接。我也无法将此文件设置为数据源或委托。

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
    if (tableView == self.table1) {
        return [self.activeList count];
    } else if (tableView == self.table2) {
        return [self.disabledList count];
    }

    return 0;
}

第一个问题是您将“table1”和“table2”声明为属性,但您没有正确引用它们。

第二个问题是“isEqual”比较对象的内容,但你真正想做的是比较对象地址本身(所以“isEqual”不适用于此)。