sha*_*rgy 3 variables checkbox xcode rows tableview
首先,我搜索了3天,但没有找到我要找的东西.
第二点,我是一个非常初学的xcode编程,所以请保持你的答案尽可能简单/或详细!
我有以下情况:
我在xcode中有一个tableview,需要第一列是文本,然后X列是复选框列,最后一列是文本.X列是一个变量,我读取了一个sqlite文件,并根据这些条目为每个条目创建一个列.然后将在稍后的所有行添加.
我的问题是,我如何在运行时定义什么类型和我有多少列?我如何知道复选框的值(如果选中或不检查)如果我不知道它有多少个单元格,我如何向tableview添加行?
谢谢你抽出宝贵的时间!
最好的祝福
伊戈尔
你想在运行时创建一个表,你不知道有多少列!
这是一个大问题.
阅读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];
}
Run Code Online (Sandbox Code Playgroud)
检查具有值"check"的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;
}
Run Code Online (Sandbox Code Playgroud)
按开/关更新复选框的值.
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row {
[states replaceObjectAtIndex:row withObject:value];
[tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4132 次 |
| 最近记录: |