如何在cocoa中创建一个复选框的1列tableview

时间:2013-06-14 19:21:27

标签: objective-c cocoa binding checkbox tableview

使用固定数量的复选框创建单列tableview的正确步骤是什么。例如,列可以具有以下内容(X表示选中复选框,_表示未选中复选框。我还希望在同一列中显示文本标题。):

标题一:

X项目1

_第2项

X项目3

X第4项

标题二:

X第5项

_第6项

如果可能的话,我更喜欢使用Cocoa绑定。此外,我需要知道如何获取用户检查或取消选中的任何项目的开/关检查状态。我需要知道如何将复选框的标题文本设置为“第1项”,“第2项”等。

我要做的是使用tableview创建一个项目列表框,其复选框可以在Microsoft MFC中完成。请明确代码说明并描述IB步骤,因为我对Cocoa和Objective-C很新。

感谢。

2 个答案:

答案 0 :(得分:1)

好的,我已经为你制作了这个项目并在截屏视频中录制了我是如何制作它的 一切都是如此滞后,因为我的旧版2008y MacBook难以截屏。

项目:Download
截屏:Download

答案 1 :(得分:0)

我是用iPad写的,对任何错误都很抱歉,我无法测试代码 1)在IB中放置一个nstableview,在检查器中使其成为1列,使其基于视图,命名为MainCoumn列。将复选框放在tableviewcell中。
2)选择yor表视图,打开检查器中的第四个选项卡,并将代理和数据源与AppDelegate连接。
3)在AppDelegate.h中添加:

<NSTableViewDelegate, NSTableViewDataSource>  

之后:NSObject

4)在AppDelegate.m中添加:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
if( [tableColumn.identifier isEqualToString:@"MainColumn"] )
{
    NSArray *subviews = cellView.subviews;
    NSButton *checkbox = [subviews objectAtIndex:1];
    cellView.textField.stringValue = @"checkbox";
   //  [checkbox state];  - check is it checked
  //   [checkbox setState:0];  - 0 is to set it unchecked, 1- checked. 
    // if you need to make the second one checked, other - unchecked:
   if (row == 1) {
    [checkbox setState:1];
    } else {
     [checkbox setState:0]; 
    }
    return cellView;
}
return cellView;    
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 6 
   // here you type the number of rows
}

5)profit111