我是iPhone devlopemnt的新手我正在开发一个应用程序。在该应用中,我需要在UITableView
中显示列表项目及其各自的价格。为了解决这个问题,我遵循一些概念,比如在UITableViewCell
中动态创建标签,以显示项目及其价格。
在应用程序中,第一个indexid == 1
表示我在列表上的特定单元格上显示列表位置是最喜欢的项目列表,其价格意味着indexid = 2 ...单击后退按钮indexid = 1然后我需要隐藏那个标签......但标签没有隐藏它显示列表价格而不是项目列表
lblText.text = nil;
btnBack.hidden = FALSE;
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.font = [UIFont boldSystemFontOfSize:14.0];
cell.textLabel.highlightedTextColor = [UIColor orangeColor];
}
///////////////////// Cell Title /////////////////////
if (indexId == 1)
{
// NSLog(@"%@",lblText1);
cell.textLabel.text = [NSString stringWithFormat:@"%@", [test.arrTitle objectAtIndex:indexPath.row]];
lblText = [[UILabel alloc] initWithFrame:CGRectMake(250, 7, 40, 30)]; // For right alignment
lblText.text = [test.arrId objectAtIndex:indexPath.row];
[lblText setTextAlignment:UITextAlignmentCenter];
lblText.textColor = [UIColor redColor];
lblText.backgroundColor = [UIColor clearColor];
[cell addSubview:lblText];
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"products-category-bg.png"]];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[lblText release];
}
else
{
lblText.hidden = YES;
cell.textLabel.text = [NSString stringWithFormat:@" %@", [test.arrTitle objectAtIndex:indexPath.row]];
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"product-bg-hover.png"]];
}
return cell;
}
我有以下问题。标签创建正常,但在单击后退按钮后,我在主表视图中获得标签值。
如何使用数据发布标签对象?
谢谢&问候
请帮我解决这个问题
答案 0 :(得分:0)
您的代码对我来说很合适,只需将上面代码中的一行替换为下面的链接
即可[cell.contentView addSubview:lblText];
相反
[cell addSubview:lblText];
希望它能解决您的问题。
答案 1 :(得分:0)
如果您为应用程序中的不同状态使用相同的表视图实例,那么您还将重新使用先前创建的单元格:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
对于每个单元格,当您indexid == 1
执行此操作时:
[cell addSubview:lblText];
对我而言,这表示您创建的每个单元格(并且将被重复使用)都会添加UILabel
作为子视图。要真正重复使用该单元格,您需要在逻辑表明需要再次添加之前删除UILabel
。当您不需要它时,它不仅会删除单元格,还会阻止您在运行时向单元格添加额外的UILabel实例。在检查indexid
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.font = [UIFont boldSystemFontOfSize:14.0];
cell.textLabel.highlightedTextColor = [UIColor orangeColor];
}
// Be sure to remove the UILabels on the re-used cell.
for(UIView *view in cell.subviews)
if ([view isKindOfClass:([UILabel class])])
[view removeFromSuperview];
if (indexid == 1) { ....
每次创建单元格时都会删除UILabel,允许您有条件地将其重新添加为子视图。
答案 2 :(得分:0)
尝试为您的标签设置标签(将帮助您将数据设置为标签,您可以通过调用
获取标签[cell viewWithTag:
theLabelTag
]
其中theLabelTag
标记可以是索引)
并在
tableView: willDisplayCell: forRowAtIndexPath:
而不是
tableView:cellForRowAtIndexPath: