iphone: UItableviewcell дублирует при использовании перезагрузки таблицы - PullRequest
0 голосов
/ 10 марта 2012

Мое табличное представление дублируется, когда я использую [tableview reloadData]. Я использовал это, чтобы обновить табличное представление, когда я вернусь.

Это мой код.

#define kMyTag 1
#define despTag 2
#define subTag 3

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.tableview reloadData];
}    
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    AsyncImageView *asyncImageView = nil;
    UILabel *label = nil;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] ;

        UILabel *mainLabel=[[UILabel alloc]init];
        mainLabel.tag = kMyTag; // define kMyTag in your header file using #define
        mainLabel.frame=CGRectMake(95, 0, 170, 30);
        mainLabel.font = [UIFont boldSystemFontOfSize:14];
        mainLabel.backgroundColor=[UIColor clearColor];
        [cell.contentView addSubview:mainLabel]; 

        UILabel *despLabel=[[UILabel alloc]init];
        despLabel.tag=despTag;
        despLabel.frame=CGRectMake(95, 25, 190, 20);
        despLabel.font= [UIFont systemFontOfSize:12];
        despLabel.backgroundColor=[UIColor clearColor];
        [cell.contentView addSubview:despLabel]; 

    } else {

        label = (UILabel *) [cell.contentView viewWithTag:LABEL_TAG];
    }
    switch([indexPath section]){
        case 0:
            { 
            NSString *urlString = [img objectAtIndex:indexPath.row];
            urlString=[urlString stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

            tname=[mname objectAtIndex:indexPath.row];
            tprice=[mprice objectAtIndex:indexPath.row];
            tquan=[mquan objectAtIndex:indexPath.row];
            tspice=[mspice objectAtIndex:indexPath.row]; 

            UILabel *mainLabel=(UILabel *)[cell.contentView viewWithTag: kMyTag];
            mainLabel.text =  [NSString stringWithFormat:@"%@",tname];
            UILabel *despLabel=(UILabel *)[cell.contentView viewWithTag: despTag];
            despLabel.text = [NSString stringWithFormat:@"Qty :%@   Spice: %@",tquan,tspice];
            UILabel *subLabel=(UILabel *)[cell.contentView viewWithTag: subTag];
            float pric=[tprice floatValue];
            subLabel.text =  [NSString stringWithFormat:@"Price :%@ %.2f",currencyType, pric];
        }
    }
}

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Преодолеть проблему, удалив все объекты из массива, затем повторно выбрать таблицу БД и перезагрузить uitableview.

0 голосов
/ 10 марта 2012

это происходит потому, что вы не передаете никакого значения в dequeueReusableCellWithIdentifier передать строковое значение и затем использовать его в reuseIdentifier также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...