这只是一个例子。
按照步骤完成:
- 拖放表格视图。
- 将表格单元格视图 (NSTableCellView) 拖放到表格视图单元格内。现在,您的表格视图是基于视图的。
- 将表格单元格视图 (NSTableCellView) 的标识符设置为“CheckBoxCell”-> 第一列的 NSTableCellView 并将另一列的表格单元格视图设置为“TextBoxCell”。
- 删除 NSTableCellView 中存在的图像视图。
- 拖放一个复选框(不是 NSButtonCell,它应该是 NSButton)。
- 拖放阵列控制器并放置一个插座“myArrayController”
@interface ExAppDelegate : NSObject <NSApplicationDelegate,NSTableViewDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (strong) NSMutableArray *myArray;
@property (strong) IBOutlet NSTableView *myTableView;
@property (strong) IBOutlet NSArrayController *myArrayController;
@end
@implementation ExAppDelegate
@synthesize myArray;
@synthesize myTableView;
- (void)applicationWillFinishLaunching:(NSNotification *)notification
{
[self.myTableView setDelegate:self];
if(self.myArray == nil)
{
self.myArray = [NSMutableArray array];
for (NSUInteger i=0; i < 10; i++)
{
NSMutableDictionary *test = [NSMutableDictionary dictionary];
[test setValue:[NSString stringWithFormat:@"%ld",i] forKey:@"Name"];
NSUInteger marks = i + 10;
[test setValue:[NSString stringWithFormat:@"%ld",marks] forKey:@"Marks"];
[self.myArray addObject:test];
}
}
[self.myArrayController rearrangeObjects];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSTableCellView *checkBoxCell = nil;
if(tableView == self.myTableView)
{
//Get the Column Number
NSUInteger tableCol = [tableView.tableColumns indexOfObject:tableColumn];
if(tableCol == 0)
{
checkBoxCell = (NSTableCellView *)[tableView makeViewWithIdentifier:@"CheckBoxCell" owner:tableColumn];
NSArray *myViews = [checkBoxCell subviews];
NSButton *checkBoxButton = [myViews objectAtIndex:0];
NSDictionary *valueDictionary = [self.myArray objectAtIndex:row];
NSString *titleValue = [valueDictionary valueForKey:@"Name"];
[checkBoxButton setTitle:titleValue];
NSUInteger mod = row % 2;
if(mod == 0)
{
[checkBoxButton setState:NSOnState];
}
else
{
[checkBoxButton setState:NSOffState];
}
}
else
{
checkBoxCell = (NSTableCellView *)[tableView makeViewWithIdentifier:@"TextBoxCell" owner:tableColumn];
}
}
return checkBoxCell;
}
@end
==============================================
Bindings(Ignoring Data Source) myArrayController -> 绑定到 -> ExAppDelegate -> 内容数组 -> 模型键路径 -> self.myArray tableView -> 绑定到 -> 表格内容 -> 内容数组 -> arrayController -> 排列的对象。不要为表视图绑定设置任何模型键路径
==============================================
- 我已将 Outlet 作为 mytableView 设置为 NSTableView
- 假设表视图中有两列
- 假设一列应设置为复选框单元格,另一列应设置为文本字段单元格
*您希望将唯一标题设置为复选框单元格以及标记为选中与否。(仅供参考:我交替标记选中和未选中,就像第一行将被选中,第二行将被选中,依此类推......)
我正在考虑一个包含带有 2 个键的字典的数组 - > 第一个键(名称)第二个键(标记)
然后稍后实现方法“- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row”
我希望这将有助于解决问题。:)