2011-08-24 21 views
8

サブビューをUITableViewCellに追加すると問題が発生します。 テーブルのサイズがiPhoneのサイズを下回っているときに動作しています。サブビューをUITableViewCellに追加

しかし、サイズが大きくなったとき、私はスクロールしてるとき、それはこのようないくつかの恐ろしい効果を行います

enter image description here

をこのようなことになっています。そして、私はそれを考える

enter image description here 細胞の再利用に由来する。 は、ここに私のコードのサンプルです:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *kCellIdentifier = @"UITableViewCellStyleSubtitle"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; 
    if (cell == nil) { 
     //construct the cell 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
             reuseIdentifier:kCellIdentifier] autorelease]; 


     //clear the previuous content 
     NSLog(@"Il y a %d subviews", [[[cell contentView] subviews] count]); 
     //[[[cell contentView] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)]; 
     NSLog(@"Il y a %d subviews", [[[cell contentView] subviews] count]); 
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]]; 
     [cell setSelectionStyle:UITableViewCellEditingStyleNone]; 
    }  

    switch (indexPath.row) { 
     case 0: 
      [cell addSubview:titleEvent]; 
      break; 
     case 1: 
      //load the owner logo 
      [cell addSubview:logoAsso]; 
      break; 
     case 2: 
      //StartDate 
      [cell addSubview:clockImage]; 
      break; 
     case 3: 
      //EndDate 
      [cell addSubview:clockEndImage]; 
      break; 
     case 4: 
      //Address 
      [cell addSubview:adress]; 
      break; 
     case 5: 
      //map 
      [cell addSubview:map]; 
      break; 
     case 6: 
      //header 
      [Graphism configureSeparationCell:cell]; 
      break; 
     case 7: 
      //descritpion 
      [cell addSubview:descriptionEvent]; 
      break; 
     default: 
      break; 
    } 
    return cell; 
} 

サブビューは、クラスのattributs、及び方法のviewDidLoadで構成されています。 私が間違っていることを教えてもらえれば、そんな安堵になるでしょう。このような

答えて

4
switch (indexPath.row) { 
    case 0: 


     if (![cell.contentView viewWithTag:11]) { 

      titleEvent.tag = 11; 

      [cell.contentView addSubview:titleEvent]; 
     } 


     break; 
    case 1: 
     if (![cell.contentView viewWithTag:11]) { 

      logoAsso.tag = 11; 

      [cell.contentView addSubview:logoAsso]; 
     } 

すべてのスイッチのケースのために行う

-3

[cell.contentView addSubview:clockImage];

5

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

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIdentifier"] autorelease]; 

    } else { 
     UIView *subView = (UIView *)[cell.contentView viewWithTag:1]; 
     if ([subView superview]) { 
      [subView removeFromSuperview]; 
     } 
    } 

    UIView *subView = [[UIView alloc] init]; 
    subView.tag = 1; 
    [cell.contentView addSubview:subView]; 
    [subView release]; 

    return cell; 
} 
このコードを試してみてください
関連する問題