如何在iOS中滚动时禁用重新加载uitableview

时间:2014-04-10 06:17:11

标签: ios objective-c cocoa-touch uitableview

我想在滚动时禁用重新加载表视图。现在,当我的应用程序用户滚动uitableview时,cellForRowAtIndexPath已被召回。如何在srcolling时禁用它?请给我一些建议。提前谢谢。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = [NSString stringWithFormat:@"%d,%d",indexPath.section,indexPath.row];

    UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UILabel *FileNameLabel;
    UILabel *UploadTimeLabel;

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        CFileNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 130, 30)];
            UploadTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 20, 130, 25)];


        FileNameLabel.tag = 1000;
        FileNameLabel.backgroundColor = [UIColor clearColor];
        FileNameLabel.font = [UIFont fontWithName:@"Helvetica" size:14];
        FileNameLabel.font = [UIFont boldSystemFontOfSize:14];
        FileNameLabel.textColor = [UIColor blackColor];
        //  FileNameLabel.text =[temp objectAtIndex:indexPath.row];
        [cell.contentView addSubview: FileNameLabel];
        [FileNameLabel release];


        UploadTimeLabel.tag = 2000;
        UploadTimeLabel.backgroundColor = [UIColor clearColor];
        UploadTimeLabel.font = [UIFont fontWithName:@"Helvetica" size:12];
        UploadTimeLabel.textColor = [UIColor grayColor];
        // UploadTimeLabel.text = [UploadTimeArray objectAtIndex:indexPath.row];
        [cell.contentView addSubview: UploadTimeLabel];
        [UploadTimeLabel release];


    }

    if( [OriginalArray count] > 0)
    {
        UILabel *fileNameLbl = (UILabel*)[cell.contentView viewWithTag:1000];
        //fileNameLbl.text =[temp objectAtIndex:indexPath.row];
        fileNameLbl.text =[[OriginalArray valueForKey:@"FILENAME"] objectAtIndex:indexPath.row];

        UILabel *uploadlbl = (UILabel*)[cell.contentView viewWithTag:2000];
        uploadlbl.text =[[OriginalArray valueForKey:@"UPLOADTIME"] objectAtIndex:indexPath.row];

    }
    _tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);

    return cell;
}

4 个答案:

答案 0 :(得分:3)

滚动桌面视图时,无法阻止cellForRowAtIndexPath:调用。如果每次都不需要发生某些事情,你可以在条件允许的情况下保持这种状态。

 if (cell == nil)
    {
        //Functionality goes here when it not needed to happen every time.
    }

答案 1 :(得分:1)

不要实施方法UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"yourID"];UITableViewCell *cell = [tableView dequeueCellWithReuseIdentifier:nil];

它将阻止表视图重用单元格。但是如果你的tableview将包含大量的单元格,这不是一个好主意。希望这可以帮助。 :)

答案 2 :(得分:1)

可能您可以使用数据源,而不是试图避免重新加载,因此数据不会发生变化。我希望你明白我的意思。

答案 3 :(得分:1)

使用dequecellforrowatindex方法避免细胞重新加载。