ios 5中tableView中的自定义单元格

时间:2011-12-01 06:28:36

标签: uitableview ios5 uilabel

我试图在特定的indexPath.row中减少单元格的一个标签的宽度,但它不起作用.. 下面我添加了代码,我正在使用iOs 5故事板。 任何人都有其他方法可以在运行时改变标签的大小??

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"name&email"];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


}
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
UILabel *detail = (UILabel *)[cell viewWithTag:101];
if(indexPath.row == 0){
    nameLabel.text = @"Name : ";
    detail.text = @"";
}else if(indexPath.row == 1){
    nameLabel.text = @"Email : ";
     detail.text = @"";
}else if(indexPath.row == 2){
    nameLabel.text = @"Location Alerts";
    detail.text = @"Notifies people when they are close to a saved spot";
// here i am changing the width of lable
    detail.frame = CGRectMake(0, 0, 100, 0);
}else if(indexPath.row == 3){
    nameLabel.text = @"Share This App :";
    detail.text = @"(post to facebook/twitter)";
}else if(indexPath.row == 4){
    nameLabel.text = @"Review This App :";
    detail.text = @"(on iTunes)";
}else if(indexPath.row == 5){
    nameLabel.text = @"Get Help :";
    detail.text = @"(send an email to me)";
}
// Configure the cell...

return cell;
}

2 个答案:

答案 0 :(得分:0)

我不是专家,但我发现你使用了两个不同的标识符。

如果我是你,我会尝试:

static NSString *CellIdentifier = @"name&email";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"name&email"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


    }

好吗?告诉我它是否有效:)

答案 1 :(得分:0)

如果您在故事板中创建了自定义单元格,请检查标识符是什么并使用它。 标识符应位于属性检查器下。如果标识符单元格,那么您的代码应该是这样的,以获取Cell。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

如果你有一个名为细节的UILabel要更改其宽度,可以通过更改框架来更改尺寸重复使用之前的框架原点尺寸高度

detail.frame = CGRectMake(detail.frame.origin.x, detail.frame.origin.y, newWidth,detail.frame.size.height);

确保将detail.size.height作为高度传递,以保持高度相同(我在示例中注意到高度为0,这使得它不可见)。希望有所帮助