У меня есть NSDictionary, который содержит все данные:
Я показываю эти данные в табличном представлении на основе представления, как это:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tv
{
if (tv == _downloadTable)
//I use this "if" because I have another tableView that has nothing to do
//with this one
{
return [[myDictionary objectForKey:@"myArray"] count];
}
}
Я хочу, чтобы в этом tableView
было 2 столбца: один для отображения заголовка, а другой с флажком, чтобы я знал, какая строка отмечена.
- (NSView *)tableView:(NSTableView *)tv viewForTableColumn :(NSTableColumn *)tableColumn row :(NSInteger)row
{
if (tv == _downloadTable)
{
if (tableColumn == _downloadTableTitleColumn)
{
if ([[[myDictionary objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"])
{
NSString *title = [[[myDictionary objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"];
NSTableCellView *result = [tv makeViewWithIdentifier:tableColumn.identifier owner:self];
result.textField.stringValue = title;
return result;
}
}
if (tableColumn == _downloadTableCheckColumn)
{
NSLog(@"CheckBox"); //I wanted to see exactly when that was called
//But it didn't help me :(
NSButton *button = [[NSButton alloc]init];
[button setButtonType:NSSwitchButton];
[button setTitle:@""];
return button;
}
}
}
Прямо сейчас, когда я запускаю его и нажимаю на флажок, он ничего не делает. (Конечно, потому что я не знаю, как заставить его что-то делать. Где я должен разместить код, который должен что-то делать?
Основная цель - редактируемый список загрузок,сейчас отображается список с флажком рядом с заголовком в каждой строке. Я хотел бы знать, какие checkBox отмечены, а какие нет.
Я пробовал это:
[button setAction:@selector(checkBoxAction:)];
- (void)checkBoxAction: (id)sender
{
NSLog(@"I am button : %@ and my state is %ld", sender, (long)[sender state]);
}
Но я не могу понять, как получить строку этой кнопки, чтобы узнать, какой заголовок связан с этим флажком.
Я также безуспешно пробовал метод setObjectValue
метода tableView
.
Я бы хотел, чтобы это работало:
У меня есть кнопка «начать загрузку», которая проверяет, отмечен ли каждый флажок или нет, и запускает следующее действие (загрузку )только с отмеченной строкой.
Я хотел бы избежать привязок, потому что я планирую заставить его работать и на iOS, и я не хочу иметь другой код для iOS.