我有一个单元格,其中顶部有两个标签,中间是一个视图,底部是两个标签,它是一个图形。我硬编码的项目数量,因为我只需要10-13值,显然一切都很好,值正在更新和子视图添加在cellForRowAt委托方法,但在滚动标签的值显示为空白,和这种行为是非常不正常的,因为如果第二个和第三个索引变为空白,那么在进一步滚动时他们会回来,第五个第五个变为空白,因为没有服务调用,所以我不调用重新加载数据。这是绝对让我疯狂的,我知道它与单元格被重用时的关系,但我不知道为什么或者是什么,我做错了,因为最初的值看起来很好。集合视图单元格行为异常
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
TraingingGraphCollectionViewCell *cell = (TraingingGraphCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:[NSString stringWithFormat:@"TraingingGraphCollectionViewCell"] forIndexPath:indexPath];
if (indexPath.row == 0 || indexPath.row == 12) {
[cell initEmptyCell];
} else {
[cell initCellWithMaximumWeight:100 completedWeight:10*(int)indexPath.row maxRepititions:10 completedRepititions:(int)indexPath.row];
}
return cell;
}
以下是在委托方法中调用的方法。 `
-(void) initEmptyCell {
// [self setNeedsDisplay];
// back ground colour
self.backgroundColor = UIColorFromRGB(COLOUR_232323);
//hiding the labels
[self.completedWeightLabel setHidden:YES];
[self.completedRepititonsLabel setHidden:YES];
[self.dateLabel setHidden:YES];
[self.setLabel setHidden:YES];
}
这低于
-(void) initCellWithMaximumWeight:(float)maxWeight
completedWeight:(float)completedWeight
maxRepititions:(int)maxRepititions
completedRepititions:(int)completedRepititions {
//reloading the content
//[self setNeedsDisplay];
// back ground colour
self.backgroundColor = UIColorFromRGB(COLOUR_232323);
// adding the weight bar
float weightPercentage = completedWeight/maxWeight;
if (weightPercentage > 1) {
weightPercentage = 1;
}
UIView *weightView = [[UIView alloc] initWithFrame:CGRectMake(20.0, self.graphView.frame.size.height - (self.graphView.frame.size.height * weightPercentage), 10.0, self.graphView.frame.size.height * weightPercentage)];
[weightView setBackgroundColor:UIColorFromRGB(COLOUR_E9280E)];
[self.graphView addSubview:weightView];
// adding the repititions bar
float repsPercentage = (float)completedRepititions/(float)maxRepititions;
if (repsPercentage > 1) {
repsPercentage = 1;
}
UIView *repsView = [[UIView alloc] initWithFrame:CGRectMake(35.0, self.graphView.frame.size.height - (self.graphView.frame.size.height * repsPercentage), 10.0, self.graphView.frame.size.height * repsPercentage)];
[repsView setBackgroundColor:UIColorFromRGB(COLOUR_97F619)];
[self.graphView addSubview:repsView];
//bottom view
[self.dateLabel setAttributedText:[NSString stringWithFormat:@"%@", [Utilities convertDateToString:[NSDate date] usingFormat:dd__MM_DATE_FORMAT forCulture:@"nl_NL"]] withFont:FontUsingMacro(LATO_BOLD_FONT_STRING, 12.0) kerining:1.3 color:UIColorFromRGB(COLOUR_FFFFFF)];
[self.setLabel setAttributedText:[NSString stringWithFormat:@"Set 01"] withFont:FontUsingMacro(LATO_BOLD_FONT_STRING, 12.0) kerining:1.3 color:UIColorFromRGB(COLOUR_808080)];
//top view
[self.completedWeightLabel setAttributedText:[NSString stringWithFormat:@"%.1f KG", completedWeight] withFont:FontUsingMacro(LATO_REGULAR_FONT_STRING, 12.0) kerining:1.3 color:UIColorFromRGB(COLOUR_E9280E)];
[self.completedRepititonsLabel setAttributedText:[NSString stringWithFormat:@"%d Reps", completedRepititions] withFont:FontUsingMacro(LATO_REGULAR_FONT_STRING, 12.0) kerining:1.3 color:UIColorFromRGB(COLOUR_97F619)];
}
它很难找出没有代码的问题。 –
我已经添加了代码,请看看它。 –
在initEmptyCell中,你隐藏了一些东西。但在initCellWithMaximumWeight中,您没有取消隐藏它。单元格被重用(回收),因此您需要为cellForRow中的所有情况设置它们。 – GeneCode