Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 自定义uitableviewcell存在问题_Iphone_Ios_Uitableview_Uilabel - Fatal编程技术网

Iphone 自定义uitableviewcell存在问题

Iphone 自定义uitableviewcell存在问题,iphone,ios,uitableview,uilabel,Iphone,Ios,Uitableview,Uilabel,在过去的几天里,我一直在玩TableView,试图适应它们,今天我一直在尝试创建一个自定义uitableviewcell,我在苹果文档中的TableView编程指南中工作,我试图做的事情有一个奇怪的问题 我已经设置了一个自定义单元格nib文件,它有两个标签,都有标记(0和1)。我已经将文件所有者类更改为将使用它的nib 从那时起,我开始编程tableView:CellForRowatineXpath:方法,该方法在tableView中显示我的自定义单元格。但是,正如您将看到的,当我为其分配字符串

在过去的几天里,我一直在玩TableView,试图适应它们,今天我一直在尝试创建一个自定义uitableviewcell,我在苹果文档中的TableView编程指南中工作,我试图做的事情有一个奇怪的问题

我已经设置了一个自定义单元格nib文件,它有两个标签,都有标记(0和1)。我已经将文件所有者类更改为将使用它的nib

从那时起,我开始编程tableView:CellForRowatineXpath:方法,该方法在tableView中显示我的自定义单元格。但是,正如您将看到的,当我为其分配字符串时,只显示我的第一个标签,我只是不知道为什么

自定义单元格Nib

tableView:cellForRowAtIndexPath:method

    - (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,结果一切都很好:)真让人头疼。