如何从自定义UITableview中检索有关选择单元格的数据

时间:2012-01-21 14:08:35

标签: iphone ios uitableview uilabel didselectrowatindexpath

可能是一个愚蠢的问题。

我有一个UITableview,有多个单元格。在每个单元格中,我显示一些数据。我没有使用cell的text属性来显示数据。相反,我的单元格中有一个自定义标签,显示文本。 我的问题是: 当我单击单元格时,我需要从单元格中检索数据。我怎么能这样做。

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];


    UILabel *CellTextlabel = [[UILabel alloc] init];
    CellTextlabel.tag = 222;
    [CellTextlabel setFrame:CGRectMake(40, 5, 200, 20)];
    [cell.contentView addSubview:CellTextlabel];
    [CellTextlabel release];
  }


UILabel *editCellTextlabel = (UILabel *)[cell.contentView viewWithTag:222];
editCellTextlabel.font = [UIFont boldSystemFontOfSize:18];
editCellTextlabel.text = contact.lastName;

3 个答案:

答案 0 :(得分:2)

在didSelectRowAtIndexPath方法中,您可以按如下方式执行此操作:

UITableViewCell *cell = (UITableViewCell *)[self.tableViecellForRowAtIndexPath:indexPath];         
UILabel *textLabel = (UILabel *)[cell viewWithTag:222];

现在,您可以使用textLabel.text检索单元格的UILabel中的数据

答案 1 :(得分:1)

-tableView:didSelectRowAtIndexPath:方法中,您可以从tableView的数组中获取数据:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    id objectForCell = [self.myArray objectAtIndex:indexPath.row];
    //do what you want with the above data.
}

答案 2 :(得分:1)

您可以使用

访问didSelectRowAtIndexPath:中的该标签
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *myLabel = [cell.contentView viewWithTag:222];

但是可能值得一提,为什么要添加子标签而不是使用textLabel属性?您可以修改其框架,设置等,然后您不必担心标签,因为此属性默认情况下在UITableViewCell中公开