具有多列的NSTableView

Mat*_* S. 3 cocoa nstableview nstablecolumn

使用多列设置NSTableView以仅在一列中显示某些数据的简单方法是什么.我设置了IBOutlets,但我不知道从那里去哪里.

Dom*_*ney 7

假设您没有使用Cocoa绑定/核心数据,您可以通过实现NSTableViewDataSource协议中的两个方法在NSTableView中显示数据.通常,您的控制器将实现协议,因此打开控制器.m文件并将这些方法添加到控制器@implementation:

- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
  return 25;  // fill this out
}

– (id) tableView:(NSTableView*)tableView
       objectValueForTableColumn:(NSTableColumn*)column
       row:(int)row {
  return row % 3 ? @"Tick..." : @"BOOM!";  // fill this out
}
Run Code Online (Sandbox Code Playgroud)

您需要将表的dataSource属性设置为控制器.在Interface Builder中,从表视图拖动到控制器并进行设置dataSource.现在构建并运行,您应该在表中看到您的数据.

如果您只想填写一列,请将IBOutlet NSTableColumn*添加到您的控制器; 我们称之为explosiveColumn.在Interface Builder中,控制 - 从控制器拖动到要填充和设置的列explosiveColumn.然后,在tableView:objectValueForTableColumn:row中:您可以测试column参数是否与插座设置为的对象相同:

– (id) tableView:(NSTableView*)tableView
       objectValueForTableColumn:(NSTableColumn*)column
       row:(int)row {
  if (column == explosiveColumn) {
    return row % 3 ? @"Tick..." : @"BOOM!";
  } else {
    // other columns blank for now
    return nil;
  }
}
Run Code Online (Sandbox Code Playgroud)

本教程可能很有用:http://www.cocoadev.com/index.pl?NSTableViewTutorial