在cellForRowAtIndexPath中使用dequeueReusableCellWithIdentifier时遇到问题

时间:2014-06-26 12:31:00

标签: ios uitableview

我正在使用下面的代码将文本标签添加到静态表中,每个部分包含4个部分和3个行。 出于某种原因,当我第一次运行应用程序时它很好,但是当我向上和向下滚动时,UItable没有正确显示。有人可以说出原因吗?

NSString *identifer = @"net";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer] ;

if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];


    UILabel *Net= [[UILabel alloc] initWithFrame:CGRectMake(15, 15, 220.0, 15.0)];
    Net.tag = indexPath.row;


    Net.text = [NSString stringWithFormat:@"%ld",(long)indexPath.row];

    Net.textColor= [UIColor blackColor];
    Net.font=[UIFont systemFontOfSize:14.0];

    [cell addSubview:Net];

}else {

UILabel *Label1 =(UILabel*) [cell viewWithTag:indexPath.row];
    Label1.text =[NSString stringWithFormat:@"%d",indexPath.row];
    Label1.font=[UIFont systemFontOfSize:14.0];
}

return cell;

1 个答案:

答案 0 :(得分:0)

在构建单元格时,我认为您不需要和其他语句,这是一个可能适合您的编辑代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 4;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *identifer = @"net";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer] ;

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];

        UILabel *Net= [[UILabel alloc] initWithFrame:CGRectMake(15, 15, 220.0, 15.0)];
       // Net.tag = indexPath.row;

        Net.text = [NSString stringWithFormat:@"%d",indexPath.row];

        Net.textColor= [UIColor blackColor];
        Net.font=[UIFont systemFontOfSize:14.0];

        [cell addSubview:Net];

    }
    /*else {

        UILabel *Label1 =(UILabel*) [cell viewWithTag:indexPath.row];
        Label1.text =[NSString stringWithFormat:@"cell nr. %d",indexPath.row];
        Label1.font=[UIFont systemFontOfSize:14.0];
    }
    */

    return cell;
}

我已经对您的最后一行代码进行了评论,因此您不会失去它们。如果您还将TabelView的样式设置为" Grouped",您将获得以下结果:

http://s2.postimg.org/820thcmy1/i_OS_Simulator_Screen_shot_26_giu_2014_14_46_41.png

希望这有帮助!