2014-10-21 5 views
1

Мы разрабатываем приложение, в котором мы должны использовать пользовательский интерфейс UItableViewcell для отображения данных. Показывая данные в UItableViewCell, если у нас есть какой-либо контент (ранее UItableViewCell уже содержит контент haviong или связывается с некоторыми данными) в UItableViewCell, ему необходимо удалить и привязать к новым данным, иначе данные должны быть привязаны к tableview. Ниже приведен код, который мы попробовали.Как обновить UItableViewcell новыми данными

if (cell.thumbnailImageView.image==nil) {    
     cell.thumbnailImageView.image = [imagearray objectAtIndex:indexPath.row]; 
     // cell.pricelabel.text = [pricearray objectAtIndex:indexPath.row]; 
     cell.DealDecLabel.text=[DealDecarray objectAtIndex:indexPath.row]; 

     cell.pricelabel.text = [NSString stringWithFormat:@"%@",[pricearray objectAtIndex:indexPath.row]]; 
    } 
    else 
    { 
     cell.thumbnailImageView.image=nil; 
     cell.DealDecLabel.text=nil; 
     cell.pricelabel.text=nil; 

     cell.thumbnailImageView.image = [imagearray objectAtIndex:indexPath.row]; 
     // cell.pricelabel.text = [pricearray objectAtIndex:indexPath.row]; 
     cell.DealDecLabel.text=[DealDecarray objectAtIndex:indexPath.row]; 

     cell.pricelabel.text = [NSString stringWithFormat:@"%@",[pricearray objectAtIndex:indexPath.row]]; 
    } 

Кто-нибудь предоставляет решение или код, который очень ценится.

ответ

2

Этот код находится в cellForRowAtIndexPath справа? Если это не так должно быть, но при условии, что это

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
          withRowAnimation:UITableViewRowAnimationNone]; 

перезагрузит конкретную ячейку в Tableview

[self.tableView reloadData]; 

перезагрузит все дело

, Вам не нужно чтобы каждый раз выпустить изображение ... вы можете просто сделать.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    MYCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (!cell) 
     cell = [[MYCustomTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    cell.thumbnailImageView.image = [imagearray objectAtIndex:indexPath.row]; 
    cell.DealDecLabel.text=[DealDecarray objectAtIndex:indexPath.row]; 
    cell.pricelabel.text = [NSString stringWithFormat:@"%@",[pricearray objectAtIndex:indexPath.row]]; 


    return cell; 

} 

P otentially посмотреть на массив словарей, а не 3 отдельных массивов ..

и с учетом cell.imageView, cell.textLabel и cell.detailTextLabel предоставляются в UITableViewCell подклассу, я бы, вероятно, изменить те посмотреть, как ваши две метки и удалить их, как они ненужным. DetailTextLabel необходимо UITableViewCellStyleDefault быть изменено на UITableViewCellStyleSubtitle

0

Всякий раз, когда вы добавляете новые данные в массиве вас в DealDecarray то есть, просто позвоните

[self.tableView reloadData]; 

Это будет работать для вас.

1

Если вы получаете данные из веб-сервисов, то добавьте ниже код.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"Did Finished loading...."); 
    // down here reload your tableview 
    [self.tableView reloadData]; 
} 
+0

Мы получаем данные, основанные на другой ячейке tableview, после чего мы привязываем данные к другому представлению таблицы. –

0

Измените источник данных uitableview на новые данные, а затем перезагрузите таблицу.

[таблица reloadData];

+0

мы получаем данные, основанные на другой ячейке tableview, после чего мы привязываем данные к другому представлению таблицы. –

+0

, когда вы нажимаете на один tableviewcell, тогда в это время вызов метода didselectrowatindex в это время меняет источник данных на другой таблице. –

Смежные вопросы