首先,我搜索了3天,没有找到我要找的东西。
第二点,我对 Xcode 编程非常陌生,所以请让您的答案尽可能简单和/或详细!
在我的内部,我NSTableView
需要第一列是文本,然后X
是复选框列的数量,最后一列是文本。列X
数是基于我从 SQLite 文件中读取的条目数的变量。
我的问题是:
- 如何在运行时定义我拥有的类型和列数?
- 我如何知道是否选中了复选框值?
- 如果我不知道它有多少个单元格,如何向 tableview 添加行?
感谢您花时间回答!
最好的问候,伊戈尔
首先,我搜索了3天,没有找到我要找的东西。
第二点,我对 Xcode 编程非常陌生,所以请让您的答案尽可能简单和/或详细!
在我的内部,我NSTableView
需要第一列是文本,然后X
是复选框列的数量,最后一列是文本。列X
数是基于我从 SQLite 文件中读取的条目数的变量。
我的问题是:
感谢您花时间回答!
最好的问候,伊戈尔
你想在运行时创建一个表,你不知道会有多少列!!!
那是一件大事。
阅读NSTableView
文档,您会找到addTableColumn:
方法。在循环中继续创建 colmn 并且不要忘记为所有列提供标识符。
在此之上,您想要一个复选框。创建复选框也不难。
编辑:
对于复选框实现,请在此处找到一个项目。
在您想要复选框的列中绘制一个 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。
- (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];
}