gpt4 book ai didi

xcode - 在 mac 应用程序的 NSTableView 中实现复选框

转载 作者:行者123 更新时间:2023-12-01 07:49:55 25 4
gpt4 key购买 nike

首先,我搜索了 3 天,没有找到我要找的东西。

第二点,我是 Xcode 编程的新手,所以请让您的回答尽可能简单和/或详细!

在我的 NSTableView 中,我需要第一列是文本,然后是 X 数量的复选框列,最后一列是文本。 X 列数是一个变量,基于我从 SQLite 文件中读取的条目数。

我的问题是:

  • 我如何在运行时定义我有什么类型和多少列?
  • 我如何知道复选框值是否被选中?
  • 如果我不知道它有多少个单元格,我如何向 TableView 添加行?

感谢您花时间回答!

最好的问候,伊戈尔

最佳答案

您想在运行时创建一个表,而您不知道那里会有多少列!!!

这是一个大问题。

阅读NSTableView 文档,您会发现addTableColumn: 方法。在循环中继续创建列并且不要忘记为所有列提供标识符

在这个上面你想要一个复选框。创建复选框也不难。

编辑:

对于复选框实现,找到一个 project在这里。

在要有复选框的列中绘制一个 checkBoxCell。或者您可以通过编程方式进行。

我是通过 IB 做到的。

您应该创建一个数组来存储每个(行数)复选框的状态。

- (id)init {
self = [super init];
if (self) {

states=[[NSMutableArray alloc] initWithObjects:@"1", @"0", @"1", nil];
}
return self; }



- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
NSLog(@"Num of rows---- %ld", [names count]);
return [names count];
}

检查 tableIdentifier 的值为“check”。

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if ([[tableColumn identifier] isEqualTo:@"name"]) {
return [names objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"check"]) {

return [states objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"states"]) {
return [states objectAtIndex:row];
}
return 0;
}

根据开/关更新复选框的值。

- (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row {          
[states replaceObjectAtIndex:row withObject:value];
[tableView reloadData];
}

关于xcode - 在 mac 应用程序的 NSTableView 中实现复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com