当TableView滚动比值更改时

时间:2013-01-16 07:28:52

标签: iphone ios uitableview

我创建了一个从数组中显示数据的表视图。但是,当我滚动表视图而不是我的数据更改时,这是不可接受的。

那么我怎样才能阻止tableview在每次滚动时刷新并在创建表视图时第一次设置所有数据。

这是我的代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
ExampleAppDataObject* theDataObject = [self theAppDataObject];    // Return the number of sections.
    return theDataObject.vendorTableAry.count;  //this is return value of array and it will be more than 2 which help to create section
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 4;   // i want only 4 row in each section
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ExampleAppDataObject* theDataObject = [self theAppDataObject]; 

    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

    UITableViewCell * cell = [tableView
                              dequeueReusableCellWithIdentifier: SimpleTableIdentifier];

    if(cell == nil) {

        cell = [[UITableViewCell alloc]
                 initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:SimpleTableIdentifier];

        /*cell = [[[UITableViewCell alloc]
         initWithStyle:UITableViewCellStyleSubtitle
         reuseIdentifier:SimpleTableIdentifier] autorelease];
         */

        if (indexPath.row==0) {
            UILabel * vendorLbl = [[UILabel alloc] initWithFrame:CGRectMake(10, 2, 60, 39)];
            [[vendorLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorLbl.backgroundColor = [UIColor clearColor];


            [vendorLbl setText:@"vender"];

            [cell.contentView addSubview:vendorLbl];


            UILabel * columnLbl = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 10, 39)];

            columnLbl.backgroundColor = [UIColor clearColor];


            [columnLbl setText:@":"];

            [cell.contentView addSubview:columnLbl];


            UILabel * vendorValueLbl = [[UILabel alloc] initWithFrame:CGRectMake(98, 2, 195, 39)];

            [[vendorValueLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorValueLbl.backgroundColor = [UIColor clearColor];


            [vendorValueLbl setText:[theDataObject.vendorTableAry objectAtIndex:indexPath.section]];

            [cell.contentView addSubview:vendorValueLbl];
        }
        if (indexPath.row==1) {
            UILabel * vendorLbl = [[UILabel alloc] initWithFrame:CGRectMake(10, 2, 60, 39)];
            [[vendorLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorLbl.backgroundColor = [UIColor clearColor];


            [vendorLbl setText:@"Gallons"];

            [cell.contentView addSubview:vendorLbl];


            UILabel * columnLbl = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 10, 39)];

            columnLbl.backgroundColor = [UIColor clearColor];


            [columnLbl setText:@":"];

            [cell.contentView addSubview:columnLbl];


            UILabel * vendorValueLbl = [[UILabel alloc] initWithFrame:CGRectMake(98, 2, 195, 39)];

            [[vendorValueLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorValueLbl.backgroundColor = [UIColor clearColor];


            [vendorValueLbl setText:[theDataObject.gallonsTableAry objectAtIndex:indexPath.section]];

            [cell.contentView addSubview:vendorValueLbl];
        }
        if (indexPath.row==2) {
            UILabel * vendorLbl = [[UILabel alloc] initWithFrame:CGRectMake(10, 2, 60, 39)];
            [[vendorLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorLbl.backgroundColor = [UIColor clearColor];


            [vendorLbl setText:@"Route"];

            [cell.contentView addSubview:vendorLbl];


            UILabel * columnLbl = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 10, 39)];

            columnLbl.backgroundColor = [UIColor clearColor];


            [columnLbl setText:@":"];

            [cell.contentView addSubview:columnLbl];


            UILabel * vendorValueLbl = [[UILabel alloc] initWithFrame:CGRectMake(98, 2, 195, 39)];

            [[vendorValueLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorValueLbl.backgroundColor = [UIColor clearColor];


            [vendorValueLbl setText:[theDataObject.routeTableAry objectAtIndex:indexPath.section]];

            [cell.contentView addSubview:vendorValueLbl];
        }
        if (indexPath.row==3) {
            UILabel * vendorLbl = [[UILabel alloc] initWithFrame:CGRectMake(10, 2, 60, 39)];
            [[vendorLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorLbl.backgroundColor = [UIColor clearColor];


            [vendorLbl setText:@"Date"];

            [cell.contentView addSubview:vendorLbl];


            UILabel * columnLbl = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 10, 39)];

            columnLbl.backgroundColor = [UIColor clearColor];


            [columnLbl setText:@":"];

            [cell.contentView addSubview:columnLbl];


            UILabel * vendorValueLbl = [[UILabel alloc] initWithFrame:CGRectMake(98, 2, 195, 39)];

            [[vendorValueLbl layer] setCornerRadius:5.0f];
            //[vendorLbl setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
            vendorValueLbl.backgroundColor = [UIColor clearColor];


            [vendorValueLbl setText:[theDataObject.dateTableAry objectAtIndex:indexPath.section]];

            [cell.contentView addSubview:vendorValueLbl];
        }

    }
    return cell;
}

1 个答案:

答案 0 :(得分:4)

只需将dequeueReusableCellWithIdentifier设置为nil,如下所示。

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: nil];