将cell.textLabel.text值添加到数组并显示它

时间:2012-01-26 02:27:55

标签: iphone ios uitableview

我有一个UItableView,每个单元格上有两个按钮。您可以在1 cell中添加或减去textLabel。我用这个添加单元格当前值+1:

  - (IBAction)addLabelText:(id)sender{
     num = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] +1];//<--- num is an NSNumber
     number = [[NSMutableArray alloc]initWithObjects:num, nil];//<---- number is an NSMutableArray
     [myTableView reloadData];

}

我试图减去文本并将其存储在数组中:

    - (IBAction)subtractLabelText:(id)sender
{
        if ( [[cell.textLabel text] intValue] == 0){     


     num = [NSString stringWithFormat:@"%d",[num intValue] +0];
     [number addObject:num];
         [myTableView reloadData];

     }
     else{
     num = [NSString stringWithFormat:@"%d",[num intValue] -1];
     [number addObject:num];
     [myTableView reloadData];
     }
}

我试图在cellForRow中设置cell.textLabel.text,如下所示:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
    static NSString *identifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil)
     {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];


     } 
    cell.textLabel.text = [number objectAtIndex:indexPath.row];//<---IM USING THIS LINE TO SET THE NEW TEXTLABEL
    cell.textLabel.text = @"1";


return cell;
}

我的问题

所以,加法有效,但减法没有。当我按下单元格上的按钮时,它根本不起作用。提前致谢!!

1 个答案:

答案 0 :(得分:1)

冒着指出明显的风险......你似乎已将文本属性硬编码为@&#34; 1&#34;。

cell.textLabel.text = [number objectAtIndex:indexPath.row];//<---IM USING THIS LINE TO SET THE NEW TEXTLABEL
cell.textLabel.text = @"1";

第一行可能正在按你的想法行事......但是你会立即将它改回@&#34; 1&#34;。

编辑 - 根据评论中的说明,这里是我认为您想要做的事情。我将修改您自己的代码。

请注意,我将添加到viewDidLoad作为示例。您可以在init或任何其他地方执行此操作,无论您知道要显示多少个单元格。

- (void)viewDidLoad {
    self.number = [[[NSMutableArray alloc] init] autorelease];
    for (int i = 0; i < [HOW MANY CELLS DO YOU WANT?]; i++) {
        [self.number addObject:@"1"];
    }

    [myTableView reloadData];
}

- (IBAction)addLabelText:(id)sender {
// Note that I'm assuming here that your button is a direct child of the cell.
// If not, you'll need to change this.
    UITableViewCell *cell = [sender superview];
    NSInteger newNumber = [cell.textLabel.text intValue] + 1;
    NSString *newNumberString = [NSString stringWithFormat:@"%d", newNumber];

    [self.number replaceObjectAtIndex:cell.tag withObject:newNumberString];

    [myTableView reloadData];
}

- (IBAction)subtractLabelText:(id)sender {
// Note that I'm assuming here that your button is a direct child of the cell.
// If not, you'll need to change this.
    UITableViewCell *cell = [sender superview];
    NSInteger newNumber = [cell.textLabel.text intValue] - 1;
    newNumber = (newNumber < 0) ? 0 : newNumber;

    NSString *newNumberString = [NSString stringWithFormat:@"%d", newNumber];

    [self.number replaceObjectAtIndex:cell.tag withObject:newNumberString];

    [myTableView reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *identifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }

    cell.tag = indexPath.row; // Important for identifying the cell easily later
    cell.textLabel.text = [self.number objectAtIndex:indexPath.row];

    return cell;
}

我不想深入了解更多内容,但我建议您先查看reloading only the cell modified,而不是每次都调用[myTableView reloadData]。