2014-01-14 27 views
0

我试图将NSTableView的数据源/代理/引用插座设置为我的主.xib的外部类。出于某种原因,我不能从我的Xib Ctrl+Drag.h文件创建参考。这里是我到目前为止的代码:无法为NSTableView设置引用插座

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文件,设置表类是表1 ,并试图从表中Ctrl+Drag.h文件创建出口。但它不会让我创建连接。我也不能将此文件设置为数据源或委托。

回答

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”在这里不适用)。

+0

这是有道理的,但仍然没有奏效。如果我NSLog(@“%@”,self.table1),它是空的。但它不会让我在xib文件上设置一个引用插座,因为某些原因将每个表分配给插座 – TheRedAgent

+0

您是否在窗口上设置了自定义类? “'WindowOne'”不应该从“'NSWindow'”分类吗? NSViewController并不像UIViewController在iOS下那么有用。 –

+0

不,窗口是MainWindow.h/.m/.xib,我将视图附加到主窗口 – TheRedAgent