Table column cannot show value with function tableView:aTableView objectValueForTableColumn:aTableColumn row:rowIndex

I hope the table column show the values after I pressed the button. The following is the IBAction Button.

- (IBAction)buttonTapped:(id)sender
{
    //Filling the arrays
    Test_name = [NSArray arrayWithObjects:@"test_item_a",@"b",@"c",@"Current",nil];
    Min = [NSArray arrayWithObjects:@"0.5",@"0.7",@"0.8",@"100",nil];
    Max = [NSArray arrayWithObjects:@"5",@"5",@"9",@"140",nil];
    uint16 index = 0;
    NSInteger i = 0;

    //Show_Datagrid this function move the above values to another 3 arrays table_item, 
    //table_min, table_max. And the following code is just to verify the value.
    [self Show_Datagrid:index];
    [self showMeg:@"Button Tapped!2\n"];
    [self showMeg:[table_item objectAtIndex:0]];
    [self showMeg:@"\n"];
    [self showMeg:[table_min objectAtIndex:0]];
    [self showMeg:@"\n"];
    [self showMeg:Column_test_item.identifier];

    //call this function to show the values in tableview.
    [self tableView:_tableview objectValueForTableColumn:Column_test_item row:i];
}

following is the function (Column_test_item.identifier is verified correct.):

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
 {
     if ([aTableColumn.identifier isEqualToString:@"no"])
         return [table_no objectAtIndex:rowIndex];
     if ([aTableColumn.identifier isEqualToString:@"item"])
         return [table_item objectAtIndex:rowIndex];
     if ([aTableColumn.identifier isEqualToString:@"min"])
         return [table_min objectAtIndex:rowIndex];
     if ([aTableColumn.identifier isEqualToString:@"max"])
         return [table_max objectAtIndex:rowIndex];
     if ([aTableColumn.identifier isEqualToString:@"value"])
         return [table_value objectAtIndex:rowIndex];
     if ([aTableColumn.identifier isEqualToString:@"status"])
         return [table_status objectAtIndex:rowIndex];
     return [table_no objectAtIndex:rowIndex];
 }

I thnik I called that function in wrong way. Shouldn't I input NSTableColumn parameter Column_test_item directly? Column_test_item is an IBOutlet I connected to the specfic test item column. And how does this function know which column it want to fill up the value, based on the second parameter I input?

Replies

I think I called that function in wrong way.

What do you mean precisely ? You do not call this func yourself. System calls it when needed to populate the given column * row with the content you specify.

.

And how does this function know which column it want to fill up the value, based on the second parameter I input?

because what you specify in returned value depends on column (you test the identifier) and the row (you pick in the appropriate data source).

  • Like you said, I shouldn't call this function myself.

    What other functions can I call to show value on table column?How can I make the system call this function, tableView:objectValueForTableColumn:row:rowIndex, and when does the system should call it?

    Thank you.

Add a Comment