Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么表视图在iOS中实现星级后变得缓慢?_Ios_Uitableview_Uiview - Fatal编程技术网

为什么表视图在iOS中实现星级后变得缓慢?

为什么表视图在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:

我正试图通过使用kDRATING视图来实现分级星。我在CellForRowatineXpath方法中使用了以下代码,但这会导致我的应用程序变慢。 如果它试图在viewdidload方法中分配并初始化此项,那么当我上下滚动时,星星会波动。请在这方面提供帮助

  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中发布所有代码