2013-07-04 3 views
-2

Я хочу обновить данные в tableView и получить новые данные, вставленные в качестве новых начальных строк в UITableView. У меня есть два массива: FileName Массив содержит данные, которые я получаю с сервера, используя ParseXM и массив темп, используемый для копирования с FileNameArray. Я написал функцию UpdateArray, чтобы получить новые данные, скопирую данные с FileNameArray в temp array в ViewDidLoad(), а затем позвоните UpdateArray; Я сначала удалить все записи в FileNameArray, отправить запрос на сервер вызов ParseXML после этого, то я сравниваю FileNameArray и временный массив, если FileName arr > temp arr: удалить все записи в temp arr и скопировать из FileName аранжировки в temp arr, а затем перезагрузить данные для UITableview но tableView делает не показывать новые данные в первой строке.Добавьте новую строку сначала в TableView IOS

cellForRowAtIndexPath():

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

    NSArray* FileNamereversed = [[FileCompletedArray reverseObjectEnumerator] allObjects]; 
    NSArray* UploadTimereversed = [[UploadTimeArray reverseObjectEnumerator] allObjects]; 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 


     UILabel *FileNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 100, 30)]; 
     FileNameLabel.backgroundColor = [UIColor clearColor]; 
     FileNameLabel.font = [UIFont fontWithName:@"Helvetica" size:16]; 
     FileNameLabel.font = [UIFont boldSystemFontOfSize:16]; 
     FileNameLabel.textColor = [UIColor blackColor]; 
     NSLog(@"Reseversed TEMP array %@",FileNamereversed); 
     FileNameLabel.text =[FileNamereversed objectAtIndex:indexPath.row]; 
     [cell.contentView addSubview: FileNameLabel]; 
     [FileNameLabel release]; 

     UILabel *UploadTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 300, 25)]; 

     UploadTimeLabel.backgroundColor = [UIColor clearColor]; 
     UploadTimeLabel.font = [UIFont fontWithName:@"Helvetica" size:14]; 
     UploadTimeLabel.textColor = [UIColor grayColor]; 
     UploadTimeLabel.text = [UploadTimereversed objectAtIndex:indexPath.row]; 
     [cell.contentView addSubview: UploadTimeLabel]; 
     [UploadTimeLabel release]; 

     UILabel *CompleteLabel = [[UILabel alloc] initWithFrame:CGRectMake(140, 12, 170, 25)]; 
     CompleteLabel.backgroundColor = [UIColor clearColor]; 
     CompleteLabel.font = [UIFont fontWithName:@"Helvetica" size:14]; 
     CompleteLabel.textColor = [UIColor darkGrayColor]; 
     CompleteLabel.text [email protected]"Completed"; 
     CompleteLabel.textAlignment = NSTextAlignmentRight; 
     [cell.contentView addSubview: CompleteLabel]; 
     [CompleteLabel release]; 
    } 
    //[temp removeAllObjects]; 
    // temp = [FileCompletedArray mutableCopy]; 
     return cell; 
} 

Update Array():

-(void)updateArray{ 
[NSThread sleepForTimeInterval:4.0]; 

     [FileCompletedArray removeAllObjects]; 
... 
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest]; 

     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSLog(@"Success"); 
      NSString * parsexmlinput = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
      NSLog(@"Response in Loop CompleteView: %@", parsexmlinput); //000400010001 
      // dispatch_async(dispatch_get_main_queue(), ^{ 
       [self parseXMLFile:parsexmlinput]; 

      NSLog(@"File Completed array: %@", FileCompletedArray); 
      NSLog(@"File Temp out array: %@", temp); 
      NSLog(@"File Completed count: %lu",(unsigned long)[ FileCompletedArray count]); 
      NSLog(@"File Temp out count: %lu", (unsigned long)[temp count]); 
      // NSLog(@"State: %@", state); 
      if([FileCompletedArray count ] != [temp count]) // compare 2 array 
      { 
       [temp removeallObjects]; 
       temp = [FileCompletedArray mutableCopy]; 
       [_tableView reloadData]; 

      } 
      else 
      { 
       NSLog(@"2 array equal"); 
      } 

} 

Когда я звоню UpdateArray, хотя сервер имеет новые данные, но два массива равны друг другу, так что мои tableView не обновляется. Можете ли вы показать мне решение? Заранее спасибо.

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

+0

, пожалуйста, введите код здесь для чего вы должны попробовать? – iPatel

+0

сначала обновите массив до [tableview reloadData] –

+0

Что вы пробовали до сих пор, где ваш код, если вы сделали ???? – null

ответ

0

Для обновления вида таблицы вам необходимо обновить массив согласно вашему требованию.

  1. Вы можете добавить объект как: [yourArray insertObject:object atIndex:0];//for first row.

  2. Затем загрузите таблицу с новым массивом: [yourTable reloadData]

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

+0

THanks, plz посмотреть мои правые коды –

0

@ V-Xtreme ответ правильный и другой вариант ...

А также Для делать это виды работ, вам нужно использовать метод insertRowsAtIndexPaths:withRowAnimation:, такие как

[self.tableview insertRowsAtIndexPaths:indexPath withRowAnimation:YES ]; 

Где indexPath содержит номер строки, которую вы хотите добавить.

+0

он хочет, чтобы новые данные были наверху, как вы можете это использовать? –

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