Проблема с флажком в представлении NSTableView

У меня есть NSDictionary, который содержит все данные:

  • Один заголовок (не важен для этого вопроса)
  • Одна ссылка (не важна для этого вопроса)
  • Один массив NSDictionary, содержащий снова 1 заголовок и 1 ссылку

Я показываю эти данные в табличном представлении на основе представления, как это:

- (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.

8
задан Winston 24 July 2015 в 13:08
поделиться