为什么表视图在iOS中实现星级后变得缓慢?
我正试图通过使用kDRATING视图来实现分级星。我在CellForRowatineXpath方法中使用了以下代码,但这会导致我的应用程序变慢。 如果它试图在viewdidload方法中分配并初始化此项,那么当我上下滚动时,星星会波动。请在这方面提供帮助为什么表视图在iOS中实现星级后变得缓慢?,ios,uitableview,uiview,Ios,Uitableview,Uiview,我正试图通过使用kDRATING视图来实现分级星。我在CellForRowatineXpath方法中使用了以下代码,但这会导致我的应用程序变慢。 如果它试图在viewdidload方法中分配并初始化此项,那么当我上下滚动时,星星会波动。请在这方面提供帮助 self.rating = [[KDRatingView alloc] initWithFrame:CGRectMake(0, 0, 60,20)]; [self.rating rateKDRatingView:2.80 outOf:
self.rating = [[KDRatingView alloc] initWithFrame:CGRectMake(0, 0, 60,20)];
[self.rating rateKDRatingView:2.80 outOf:3.0];
[cell.rating addSubview:self.rating ];
return cell;
听起来您需要查看UITableViewCell重用,因为当您将UITableViewCell从屏幕中滚动出来时,它将再次调用CellForRowatineXpath以在该单元格返回视图时重新创建该单元格,这可能会导致闪烁和内存消耗 您正在将
KDRatingView
添加到单元格上的rating
视图中,因此我猜您有一个自定义单元格,那么为什么不将KDRatingView
放在自定义单元格中,并在需要时更新其值呢
尝试此解决方案并重新使用一些单元:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"RatingCell";
RatingCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
// initialisation code
cell = [RatingCell new];
}
// setting code
[cell setRatingViewValue:2.8 outOf:3.0];
}
这样,它只创建一次单元格,因此不会减慢应用程序的速度。然后,每次重新创建单元格时,它只更新单元格评级(以及您需要设置的任何其他内容)
然后,您只需要在自定义单元格中实现
setRatingViewValue:outOf:
方法,以更新初始化时需要在自定义单元格中添加和定位的KDRatingView
。这没有帮助。在cellForRowAtIndexpath中发布所有代码