滚动UITableviewcells时IndexPath值是否在变化?

时间:2013-01-17 11:45:37

标签: ios iphone uitableview

first view controller移动到second view controller我在数组中保存索引路径,并在first view controller中加载表时返回,如果当前索引路径位于保存的索引路径数组中我必须创建一个自定义配件按钮。

但是,当滚动UITableview所需的单元格时,另一个单元格也会获得自定义按钮。当我在滚动时打印NSindexPaths我得到随机值而不是正常值。

对于上述内容,我使用以下代码:

- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
   // NSLog(@"newdata value is =%d",newData);
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    UITableViewCell *cell = [self.positionsTable dequeueReusableCellWithIdentifier:@"playersInPosition"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"playersInPosition"]autorelease];
    }
    UILabel *lblName = (UILabel *)[cell viewWithTag:100];
    [lblName setText:[inputData objectAtIndex:[indexPath row]]];
    UILabel *pname = (UILabel *)[cell viewWithTag:102];
    [pname setText:[appDelegate.playersNFL objectAtIndex:[indexPath row]]];

      for (NSIndexPath *object in appDelegate.indexPathList) {
    if ([object isEqual:indexPath]) {
        NSLog(@"saved index path values are =%@",appDelegate.savedIndexPath);
        UIButton *button = [self ChangeAccessoryButtonStyle:appDelegate.indexPathList[0]];
        cell.accessoryView = button;
    }
    }
        return cell;
}

2 个答案:

答案 0 :(得分:0)

我不记得文档的任何部分说索引路径是由表视图重用的,因此将对象与designed function进行比较可能是个好主意:

  

比较

     

表示接收的深度优先遍历顺序   索引路径和另一个索引路径。

     

- (NSComparisonResult)比较:(NSIndexPath *)indexPath

     

参数

     

indexPath要比较的索引路径。该值不得为零。如果   value为nil,行为未定义。

     

返回值

     

深度优先   遍历排序的接收索引路径和indexPath。

     
      
  • NSOrderedAscending:接收索引路径位于indexPath之前。
  •   
  • NSOrderedDescending:接收索引路径位于indexPath之后。
  •   
  • NSOrderedSame:接收索引路径和indexPath是相同的   索引路径。
  •   
     

状况

     

适用于iOS 2.0及更高版本。

     

声明

     

NSIndexPath.h

答案 1 :(得分:0)

尝试删除此行并每次创建单元格。

UITableViewCell *cell = [self.positionsTable dequeueReusableCellWithIdentifier:@"playersInPosition"];