2

我正在实现一个 iphone 应用程序。它是一个 UItableview。它有两个部分。三个标签添加到第二部分中的所有单元格中,在添加到单元格时为这 3 个标签提供了标签 1、2、3。现在我想要从第一节的所有单元格中获取标签3的值,我想添加所有浮点值并在第二节的另一个标签中显示总数。我读到我应该为不同单元格的标签3提供不同的标签(带有标签 3 的标签)。怎么可能请指导我。我在标签 3 中有浮点值。我想添加所有值并在第二部分中显示结果。请帮助我提供一些参考。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
NSString* curItem = [self.finalItems objectAtIndex:indexPath.row];
NSString* curQuantity = [self.finalPrices objectAtIndex:indexPath.row];
NSString* priceStr = [self fetchDishRecordswithpredicate:curItem];
NSMutableString* priceValStr = [NSMutableString stringWithString:priceStr];
[priceValStr replaceCharactersInRange:NSMakeRange(0, 1) withString:@""];
float totalPrice = [curQuantity floatValue]*[priceValStr floatValue];
UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2];
UILabel *lblTemp3 = (UILabel *)[cell viewWithTag:3];
switch (indexPath.section) {
    case 0: {
    lblTemp1.text = curItem;
    lblTemp2.text = curQuantity;
    lblTemp3.text = [NSString stringWithFormat:@"$ %0.2f", price];
    } break;
    case 1: {
        lblTemp1.text = @"Your Total:";
        lblTemp3.text = @"How can I get Total here";
    } break;
 }
return cell;
}
4

1 回答 1

2

永远不需要获取标签的值,无论它是表格单元格的一部分还是其他类型的视图。用户不能修改标签——它们仅用于显示。这意味着标签可以获得给定值的唯一方法是让您的程序设置该值,这反过来意味着您已经在某个地方获得了所需的数据。除了用于从用户获取输入的控件之外,这适用于任何类型的视图。

您希望从标签中获取值的事实可能意味着您正在使用视图来存储数据,这不是一个好习惯。视图显示数据,但该数据应存储在程序的其他位置,通常存储在数据模型中(假设您遵循 MVC 范例)。

综上所述,您可以使用它的-cellForRowAtIndexPath:方法从表格中获取给定行的单元格。从那里,您可以使用通常的-viewWithTag:方法访问单元格子视图。您绝对不需要为每个单元格设置一组唯一的标签 - 您只需要获取您感兴趣的行的单元格。但是,请记住,表格通常只保留周围可见的单元格; 如果您向它询问不可见行的单元格,它可能必须创建该单元格,这反过来将涉及向表格的委托(您自己的代码!)询问该单元格。这是一种非常昂贵的方式来询问自己已有的数据!;-)

于 2012-05-15T23:17:02.460 回答