First of all, I searched for 3 days and have not found what I am looking for.
Second point, I am VERY new to Xcode programming so PLEASE keep your answer as simple and/or detailed as possible!
Inside my NSTableView
I need the first column to be text followed by X
number of checkbox columns with the last column to be text. The X
number of columns is a variable based on the number of entries I read from a SQLite file.
My questions are:
Thanks for taking the time to answer!
Best regards, Igor
You want to create a table at runtime, and you dont know how many columns will be there!!!
Thats a big deal.
Read NSTableView
documentation and you will find addTableColumn:
method. in the loop go on to create colmn and dont forget to give identifier to all columns.
And over this you want to have a checkbox. Creating checkbox is not difficult either.
EDIT:
For checkbox implementation, find a project here.
Draw a checkBoxCell in the column you want to have checkbox. Or you can do it programatically.
I did it through IB.
You should create an array that will store the states for each(number of rows) checkboxes.
- (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];
}
Check for tableIdentifier having value "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;
}
Update the value of checkbox as per on/off.
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row {
[states replaceObjectAtIndex:row withObject:value];
[tableView reloadData];
}