2016-08-29 199 views
0

我正在调试应用程序,并有一个小故障。我在应用程序和互联网上查找它,但没有找到任何东西。iOS应用程序故障

您可以从以下

enter image description here

它看起来像下面为短的时间间隔达到毛刺。

enter image description here

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.item == 0) { 
    HGOtherUserTopInformationCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForTopInfoCellProfile forIndexPath:indexPath]; 
    cell.user = [HGUser currentUser]; 
    cell.amIFollowing = false; 
    cell.delegate = self; 
    cell.viewController = self; 
    return cell; 
}else{ 
    if (indexPath.item % 2 != 0) { 
     HGSeperatorCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForSeperatorCellProfile forIndexPath:indexPath]; 
     cell.backgroundColor = [UIColor lightGrayColor]; 
     return cell; 
    }else{ 
     HGActivity * activity = self.profileActivities[(indexPath.item - 2)/2]; 
     if ([activity.activityType isEqualToString:kActivityKeyUserPublishedResponse]) { 
      // Response 
      HGResponse * response = activity.response; 
      if ([response.mediaType isEqualToString:@"Photo"]) { 
       HGOtherUserPhotoCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForPhotoCellProfile forIndexPath:indexPath]; 
       cell.response = response; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedResponses) { 
        if ([userLikedResponses containsObject:response.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:response.challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      }else if ([response.mediaType isEqualToString:@"Video"]) { 
       HGOtherUserVideoCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForVideoCellProfile forIndexPath:indexPath]; 
       cell.response = response; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedResponses) { 
        if ([userLikedResponses containsObject:response.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       if (indexPath.item == 2) { 
        [cell playMuted]; 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:response.challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      }else{ 
       HGOtherUserMedialessCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForMedialessCellProfile forIndexPath:indexPath]; 
       cell.response = response; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedResponses) { 
        if ([userLikedResponses containsObject:response.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:response.challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      } 
     }else{ 
      // Challenge 
      HGChallenge * challenge = activity.challenge; 
      if ([challenge.mediaType isEqualToString:@"Photo"]) { 
       HGOtherUserPhotoCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForPhotoCellProfile forIndexPath:indexPath]; 
       cell.challenge = challenge; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedChallenges) { 
        if ([userLikedChallenges containsObject:challenge.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      }else if ([challenge.mediaType isEqualToString:@"Video"]) { 
       HGOtherUserVideoCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForVideoCellProfile forIndexPath:indexPath]; 
       cell.challenge = challenge; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedChallenges) { 
        if ([userLikedChallenges containsObject:challenge.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       if (indexPath.item == 2) { 
        [cell playMuted]; 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      }else{ 
       HGOtherUserMedialessCell * cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifierForMedialessCellProfile forIndexPath:indexPath]; 
       cell.challenge = challenge; 
       cell.indexPath = indexPath; 
       cell.baseDelegate = self; 
       if (userLikedChallenges) { 
        if ([userLikedChallenges containsObject:challenge.objectId]) { 
         cell.liked = true; 
        }else{ 
         cell.liked = false; 
        } 
       } 
       cell.viewController = self; 
       if (joinedChallenges) { 
        bool joined = false; 
        for (HGActivity * joinedChallengeActivity in joinedChallenges) { 
         if ([joinedChallengeActivity.challenge.objectId isEqualToString:challenge.objectId]) { 
          joined = true; 
          break; 
         } 
        } 
        cell.joined = joined; 
       }else{ 
        cell.joined = false; 
       } 
       return cell; 
      } 
     } 
    } 
} 
+0

滚动后发生? –

+1

您不是以正确的方式“重用”tableview单元格。 – rptwsthi

+1

显示一些代码? –

回答

0

有关于reloadData的问题。旧代码就像下面

[weakSelf.collectionView reloadData]; 

我改成了这样:

[weakSelf.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]]; 

而且它解决了我的问题。文本中没有更多的小故障,但图片上出现了故障。但它看起来很酷,所以我保持它:)

0

如果你是显示根据条件,那么你必须正确地重用实现代码如下cells.create共同UITableViewCell类,许多定制单元(在你的情况例如:HGCell)为UI,你可以根据你的需要创建很多的笔尖(例如:HGOtherUserTopInformationCell,HGSeperatorCell ...)。下面的代码显示了处理许多单元格的示例。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *cellIdentifier = [NSString stringWithFormat:@"Cell%ld",(long)indexPath.row]; 

    NSString *nibName; 

    if(indexPath.item == 0) 
    { 
     nibName = @"HGOtherUserTopInformationCell"; 
    } 
    else 
    { 
     if (indexPath.item % 2 != 0) 
     { 
      nibName = @"HGSeperatorCell"; 
     } 
     else 
     { 
      nibName = @"HGOtherUserPhotoCell"; 
     } 
    } 

    HGCell *cell = (HGCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 

     NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil]; 

     for (id currentObject in topLevelObjects){ 
      if ([currentObject isKindOfClass:[UITableViewCell class]]){ 
       cell = (HGCell *) currentObject; 
       break; 
      } 
     } 
    } 

    //access the cell property here 
    cell.backgroundColor = [UIColor lightGrayColor]; 

    return cell; 
}