UITableViewCell文本推送到viewController

时间:2012-01-11 21:32:39

标签: objective-c ios xcode

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    LocationsScreenTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LocationsScreenTableViewCell" owner:nil options:nil];
        for (UIView *view in views) {
            if([view isKindOfClass:[UITableViewCell class]])
            {
                cell = (LocationsScreenTableViewCell*)view;
            }
        }
    }
CGRect rectlblTitle = CGRectMake(88, 5, 130, 21);
    UILabel * lblTitle = [[UILabel alloc]initWithFrame:rectlblTitle];
    lblTitle.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];
    lblTitle.textAlignment = UITextAlignmentLeft;
    lblTitle.textColor = [UIColor whiteColor];
    lblTitle.text = [arrPlaces objectAtIndex:indexPath.row];
    CGRect rectlblDescription = CGRectMake(88, 26, 210, 35);
    UILabel * lblDescription = [[UILabel alloc]initWithFrame:rectlblDescription];
    lblDescription.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];
    lblDescription.textAlignment = UITextAlignmentLeft;
    lblDescription.textColor = [UIColor whiteColor];
    lblDescription.text = @"Here comes the cell's description. you can choose whatever you like. :)";
    lblDescription.font = [UIFont systemFontOfSize:12.5];
    lblDescription.numberOfLines = 2;
    CGRect rectlblDate = CGRectMake(245, 2, 80, 21);
    UILabel * lblDate = [[UILabel alloc]initWithFrame:rectlblDate];
    lblDate.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];
    lblDate.textAlignment = UITextAlignmentLeft;
    lblDate.textColor = [UIColor whiteColor];
    lblDate.text = @"11.01.2012";
    lblDate.font = [UIFont systemFontOfSize:12.5];
    lblDate.numberOfLines = 1;
    [cell.contentView addSubview:lblTitle];
    [cell.contentView addSubview:lblDescription];
    [cell.contentView addSubview:lblDate];
    return cell;
}

如何从lblTitle.text获取文本并将其推送到:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { PlaceDitailsScreen * tempscreen = [[PlaceDitailsScreen alloc]init [self.navigationController pushViewController:tempscreen animated:YES]; }

但是当我点击另一个UITableViewCell时,它会为我点击的每一行发送lblTitle ..

谢谢!

2 个答案:

答案 0 :(得分:1)

我旁边没有Mac,因此我的代码可能包含一些错误。

我的理解:您希望在单击单元格时从单元格中获取文本。

我的解决方案:

在你的cellForRowAtIndexPath方法中添加该行:

lblTitle.tag = 1337; //or some other number, I just like 1337 xD

然后在didSelectRowAtIndexPath方法中你可以这样做:

UILabel *blah = (UILabel*)[[self.tableView cellForRowAtIndexPath:indexPath]viewWithTag:1337];
NSString *theStringThatYouNeed = blah.text;

正如我所说:我附近没有Mac,所以你必须稍微玩一下代码。

希望有所帮助

答案 1 :(得分:0)

LocationsScreenTableViewCell *cell = (LocationsScreenTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
NSString *title = cell.lblTitle.text;