0

uitableview がスクロールされると、展開されたセルがシャッフルされ、表のセル全体がシャッフルされて重なります。これが発生する理由と設定方法を教えてください。よろしくお願いします。

コードは次のとおりです。

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

if(tableView == self.mTableView)
{
 cell = [self.mTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
}

if(tableView == self.mMenuTableView)
{
cell = [self.mMenuTableView dequeueReusableCellWithIdentifier:CellIdentifier];

     if (cell == nil)
     {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
     }
         if(indexPath.section == 0)
         {

             if(!isShowingList)
             {
                 cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"event_exp.png"]];
             }

             else
             {

                 if(indexPath.row == 0)
                 {
                     cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"event_exp_active.png"]];
                 }

                 if(indexPath.row == 1)
                 {
                 cell.textLabel.text = [self.mArrSubMenuEvent objectAtIndex:0];
                     cell.backgroundColor = [UIColor colorWithRed:56.0/255.0 green:218.0/255.0 blue:250.0/255.0 alpha:1.0];
                 }
                 if(indexPath.row == 2)
                 {
                     cell.textLabel.text = [self.mArrSubMenuEvent objectAtIndex:1];

                 }
                 if(indexPath.row == 3)
                 {
                     cell.textLabel.text = [self.mArrSubMenuEvent objectAtIndex:2];
                }

             }

         }

         if(indexPath.section == 1)
         {

             if(!isOverhead)
             {
                 cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"overhead_exp.png"]];
             }
             else
             {
             if(indexPath.row == 0)
             {

             cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"overhead_exp_active.png"]];

             }

             if(indexPath.row == 1)
             {
                 cell.textLabel.text = @"Friend";
             }

             if(indexPath.row == 2)
             {
                 cell.textLabel.text = @"Public";
             }

             }

         }

         if(indexPath.section == 2)
         {

             NSString *imgName = [self.mArrCellImages objectAtIndex:indexPath.row];
             cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imgName]];
         }

     }

cell.selectionStyle = UITableViewCellSelectionStyleNone;

return cell;
}
4

1 に答える 1

3

reuseIdentifier を nil に設定します。

cell = [self.mTableView dequeueReusableCellWithIdentifier:nil];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    }
于 2013-03-01T05:41:35.190 に答える