在UITableView中滚动后数据丢失

时间:2013-02-13 06:12:49

标签: uitableview ios6 plist

我正在尝试在tableview中显示plist数据。

我的问题是,在向下滚动后,我丢失了之前获取的数据。 实际上我正在使用自定义单元格,所以我认为这是发生的。

表的来源和代表的代码如下。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [tableData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 static NSString *kCellID = @"Cell";

OffersCustomCell *cell = (OffersCustomCell *)[mytableView dequeueReusableCellWithIdentifier:kCellID];
if (cell == nil)
{

    NSString *path = [[NSBundle mainBundle] pathForResource:@"OffersList" ofType:@"plist"];

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"OffersCustomCell" owner:self options:nil];

    cell = [nib objectAtIndex:0];



    cell.titleLabel.font = [UIFont fontWithName:@"Formata-Regular" size:13.0f];
    cell.saveLabel.font = [UIFont fontWithName:@"Formata-Bold" size:14.0f];
    cell.nowLabel.font = cell.titleLabel.font;

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

}



NSDictionary *dict = [tableData objectAtIndex:indexPath.row];
NSLog(@"%@",dict);


cell.titleLabel.text = [dict  objectForKey:@"title"];
cell.nowLabel.text = [dict objectForKey:@"price"];
cell.saveLabel.text = [dict objectForKey:@"rondel"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
       [mytableView deselectRowAtIndexPath:indexPath animated:YES];
 }

3 个答案:

答案 0 :(得分:0)

您是否为每个单元格设置了高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    CGFloat height = 0;
    //calculate height for each cell

    return height;
}

使用此UITableView委托方法设置单元格的高度。

答案 1 :(得分:0)

您可以使用另一个存储数据的类,并重新加载您使用该类的时间并正确有效地恢复数据。

答案 2 :(得分:0)

我解决了。 :)

唯一的问题是没有为UItableview保留内存。

 tableData = [[NSArray arrayWithObjects:[dic objectForKey:@"Response"], nil] retain];