-1

В моем приложении iphone у меня есть кнопка, когда я нажимаю кнопку, запускается операция загрузки, и я заменяю кнопку UIProgressView. Этот UIProgressView покажет ход загрузки. Но как только добавляется UIProgressView, когда я прокручиваю его, он исчезает. Вот мой код:UIProgressView скрывается при прокрутке таблицы.

// Customize the appearance of table view cells. 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     static NSString *CellIdentifier = @"Cell"; 

     UIMenuItemCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     if(cell == nil) 
      cell = [self getCellContentView:CellIdentifier]; 

     cell.cellitemImage = (UIImageView *)[cell viewWithTag:2]; 
     cell.cellItemButton = (UIButton *)[cell viewWithTag:3]; 

     DataBaseClass *itemObj = [appDelegate.itemArray objectAtIndex:indexPath.row]; 
     NSString *url; 
     if([itemObj.itemStatus isEqualToString:@"Available"]){ 
      cell.cellItemButton.userInteractionEnabled = YES; 
      cell.userInteractionEnabled = YES; 
      [cell.cellItemButton setTitle:@"" forState:UIControlStateNormal]; 
      [cell.cellItemButton setBackgroundImage:[UIImage imageNamed:@"img_normal"] forState:UIControlStateNormal]; 
      [cell.cellItemButton setBackgroundImage:[UIImage imageNamed:@"img_pressed"] forState:UIControlStateHighlighted]; 
      [cell.cellItemButton addTarget:self action:@selector(download) forControlEvents:UIControlEventTouchUpInside]; 
      url = [NSString stringWithFormat:@"%@",itemObj.availableIcon]; 
     }else if([itemObj.itemStatus isEqualToString:@"Downloading"]){ 
      url = [NSString stringWithFormat:@"%@",itemObj.availableIcon]; 
      [cell.contentView addSubview:myprogressView]; 
      cell.cellItemButton.hidden = YES; 
     } 

     [cell.cellitemImage setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"item01.png"]]; 

     cell.cellItemName.text = [NSString stringWithFormat:@"%@",itemObj.itemName]; 

     return cell; 
    } 

- (void)download{ 
     UIButton *btn = (UIButton *)clickedBtnSender; 
     UIMenuItemCell *cell = [(UIMenuItemCell *)[[clickedBtnSender superview] superview] retain]; 
     myprogressView = [[[CustomProgressView alloc]initWithFrame:CGRectMake(25, 140, 100, 21)] retain]; 
     myprogressView.tag = selectedTag; 

     btn.hidden = YES; 

     for (UIProgressView *currentProgress in cell.contentView.subviews) { 
      if ([currentProgress isKindOfClass:[UIProgressView class]]){ 
       [currentProgress removeFromSuperview]; 
      } 
     } 

     [cell.contentView addSubview:myprogressView]; 
} 

Пожалуйста, помогите.

EDIT

- (UIMenuItemCell *) getCellContentView:(NSString *)cellIdentifier { 

    CGRect CellFrame = CGRectMake(0, 0, 150, 60); 
    CGRect imgFrame = CGRectMake(20, 48, 110, 123); 
    CGRect btnFrame = CGRectMake(25, 140, 100, 26); 
    CGRect progressFrame = CGRectMake(25, 140, 100, 21); 


    UIImageView *itemImg; 
    UIButton *itemBtn; 
    UIProgressView *itemProgView; 

    UIMenuItemCell *cell = [[UIMenuItemCell alloc] init] ; 
    cell.frame = CellFrame; 

    //Initialize ImageView 
    itemImg = [[UIImageView alloc]initWithFrame:imgFrame]; 
    itemImg.tag = 2; 
    [cell.contentView addSubview:itemImg]; 

    //Initialize Button 
    itemBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    itemBtn.frame = btnFrame; 
    itemBtn.tag = 3; 
    itemBtn.titleLabel.textColor = [UIColor blueColor]; 
    itemBtn.titleLabel.font = [UIFont systemFontOfSize:9.0]; 
    [cell.contentView addSubview:itemBtn]; 

    //Initialize ProgressView 
    itemProgView = [[CustomProgressView alloc]initWithFrame:progressFrame]; 
    itemProgView.tag = 4; 
    //[cell.contentView addSubview:itemProgView]; 

    return cell; 
} 
+0

где вы расПредеЛение ImageView и кнопку с тегом 2 и 3 ?? – Suhaiyl

+0

Я добавил код. – Mithuzz

+0

http://stackoverflow.com/questions/8873003/uibutton-with-uiimages-in-a-uitableviewcell-overlapping-etc это поможет вам точно. – Suhaiyl

ответ

0

Я думаю, что вы должны иметь уникальный cellIdentifier для каждой ячейки

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

     UIMenuItemCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     if(cell == nil) { 
      cell = [self getCellContentView:CellIdentifier]; 

      // Some codes here 
     } 

     return cell; 
} 

Дополнительная основанный на вас Последнее редактирование

Изменение

UIMenuItemCell *cell = [[UIMenuItemCell alloc] init]; 

в

UIMenuItemCell *cell = [[UIMenuItemCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier]; 
+0

Я попытался, но, когда я начну загрузку, он покажет просмотры прогресса. Но если есть два представления прогресса, когда я просматриваю только один за раз. – Mithuzz

+0

Пожалуйста, проверьте приведенный выше код – dianz

+0

Я пробовал это, теперь, когда я прокручиваю вниз, он работает нормально, но когда я просматриваю вверх, проблема все еще там. – Mithuzz