Iphone 自定义uitableviewcell存在问题
在过去的几天里,我一直在玩TableView,试图适应它们,今天我一直在尝试创建一个自定义uitableviewcell,我在苹果文档中的TableView编程指南中工作,我试图做的事情有一个奇怪的问题 我已经设置了一个自定义单元格nib文件,它有两个标签,都有标记(0和1)。我已经将文件所有者类更改为将使用它的nib 从那时起,我开始编程tableView:CellForRowatineXpath:方法,该方法在tableView中显示我的自定义单元格。但是,正如您将看到的,当我为其分配字符串时,只显示我的第一个标签,我只是不知道为什么 自定义单元格Nib tableView:cellForRowAtIndexPath:methodIphone 自定义uitableviewcell存在问题,iphone,ios,uitableview,uilabel,Iphone,Ios,Uitableview,Uilabel,在过去的几天里,我一直在玩TableView,试图适应它们,今天我一直在尝试创建一个自定义uitableviewcell,我在苹果文档中的TableView编程指南中工作,我试图做的事情有一个奇怪的问题 我已经设置了一个自定义单元格nib文件,它有两个标签,都有标记(0和1)。我已经将文件所有者类更改为将使用它的nib 从那时起,我开始编程tableView:CellForRowatineXpath:方法,该方法在tableView中显示我的自定义单元格。但是,正如您将看到的,当我为其分配字符串
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
[[NSBundle mainBundle] loadNibNamed:@"ManufactureSearchCell" owner:self options:nil];
cell = vehicleSearchCell;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
self.vehicleSearchCell = nil;
}
// Configure the cell...
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if(indexPath.section == 0)
{
if(indexPath.row == 0)
{
UILabel *label;
label = (UILabel *)[cell viewWithTag:0];
label.text = [[NSString alloc] initWithString:@"Manufacture :"];
label = (UILabel *)[cell viewWithTag:1];
label.text = [[NSString alloc] initWithString:@"empty"];
}
else if(indexPath.row == 1)
{
//.....
任何帮助都将不胜感激:)我在提供的代码中只看到了一件突出我的东西。看起来您正在覆盖标签值。这两个是哪一个
UILabel *label1;
label = (UILabel *)[cell viewWithTag:0];
label.text = [[NSString alloc] initWithString:@"Manufacture :"];
UILabel *label2
label2 = (UILabel *)[cell viewWithTag:1];
label2.text = [[NSString alloc] initWithString:@"empty"];
为了简单起见,我只声明两个标签。还是你已经这么做了?不过,其他一切都正常吗?您是否以编程方式创建这些标签?如果不是,为什么不通过IB连接它们,给它们唯一的名称,并以这种方式访问它们?您的CellViewStyle设置为什么?看起来你有一行可以设置为注释掉的内容,有什么具体原因吗?您还可以检查自定义单元格的.xib文件中的属性,以查看是否有需要更改的内容。在提供的代码中,我只看到一个突出的内容。看起来您正在覆盖标签值。这两个是哪一个
UILabel *label1;
label = (UILabel *)[cell viewWithTag:0];
label.text = [[NSString alloc] initWithString:@"Manufacture :"];
UILabel *label2
label2 = (UILabel *)[cell viewWithTag:1];
label2.text = [[NSString alloc] initWithString:@"empty"];
为了简单起见,我只声明两个标签。还是你已经这么做了?不过,其他一切都正常吗?您是否以编程方式创建这些标签?如果不是,为什么不通过IB连接它们,给它们唯一的名称,并以这种方式访问它们?您的CellViewStyle设置为什么?看起来你有一行可以设置为注释掉的内容,有什么具体原因吗?您还可以检查自定义单元格的.xib文件中的属性,看看是否有需要更改的内容。这让我感到奇怪-
你为什么用这个
label.text = [[NSString alloc] initWithString:@"Manufacture :"];
相对于
label.text = @"Manufacture :";
事实上,你没有释放你的字符串。使用@“xxx”缩写创建一个自动删除的字符串。我不确定这是问题的原因,但使用字符串的扭曲内存管理可能会产生类似于视觉的效果。因此,清理它将是一个良好的开端
此外,请确保在IB中您使单元格引用了文件所有者的vehicleSearchCell属性。更多的是暗中刺伤。这让我觉得很奇怪-
你为什么用这个
label.text = [[NSString alloc] initWithString:@"Manufacture :"];
相对于
label.text = @"Manufacture :";
事实上,你没有释放你的字符串。使用@“xxx”缩写创建一个自动删除的字符串。我不确定这是问题的原因,但使用字符串的扭曲内存管理可能会产生类似于视觉的效果。因此,清理它将是一个良好的开端
此外,请确保在IB中您使单元格引用了文件所有者的vehicleSearchCell属性。更多的是暗中刺杀。使用viewWithTag和0时要小心。这是所有视图的默认标记,因此请仔细检查,您实际上是从该视图而不是单元格的背景视图、附件视图或添加到单元格的任何其他默认视图中获取所需的标签。它会引起问题
如果您要重用该单元格,我建议您创建一个自定义UITableViewCell子类,并通过IB链接它们。如果您不重用该单元格,并且希望它只显示一次,那么请接受Karoly的建议,将这些标签作为IBOutlet 使用viewWithTag和0时要小心。这是所有视图的默认标记,因此请仔细检查,您实际上是从该视图而不是单元格的背景视图、附件视图或添加到单元格的任何其他默认视图中获取所需的标签。它会引起问题
如果您要重用该单元格,我建议您创建一个自定义UITableViewCell子类,并通过IB链接它们。如果您不重用该单元格,并且希望它只显示一次,那么请接受Karoly的建议,将这些标签作为IBOutlet 好的一点,似乎分配是不必要的。hrmm这不起作用,但定义新标签也不起作用。。这里发生了一些奇怪的事情。。。我已经检查了我的自定义单元格笔尖,一切都设置正确。好的一点,似乎不需要分配。hrmm这不起作用,但定义新标签也不起作用。。这里发生了一些奇怪的事情。。。我已经检查了我的自定义单元格笔尖,所有设置都正确。Karoly S是正确的,您通常会对两个标签使用单独的变量。我的想法是一样的。。在这个例子中,他们似乎在做同样的事情,我认为viewWithTage参数正在启用这种功能。。。我现在就试试这个,因为它似乎是最有可能的解决方案…没有必要,标签只是一个指向单元格的指针,在使用前设置为每个单元格。Karoly S是正确的,您通常会对两个标签使用单独的变量。我也在想同样的事情。。在这个例子中,他们似乎在做同样的事情,我认为viewWithTage参数正在启用这种功能。。。我现在就试试这个,因为它似乎是最有可能的解决方案……没有必要,标签只是一个指向单元格的指针,在使用前设置为每个单元格。这确实是个问题。非常感谢你。。。我把标签改了+1,结果一切都很好:)真让人头疼。这确实是问题所在。非常感谢你。。。我把标签改了+1,结果一切都很好:)真让人头疼。