1

問題があります: UITableView のデータを更新します。サーバーから応答するparseXMLから新しいデータを取得し、新しいデータをUITableViewに更新したい。**以下のコードを使用しましたが、Table View に新しいデータが表示されません。UpdateArray()新しいデータをチェックする関数を書いてから、2つの配列を比較し、diffの[Array count]場合は呼び出します[tableview reloadData];

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }

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

    }

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 90;
    }



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

        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 %@",temp);
            FileNameLabel.text =[temp 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 = [UploadTimeArray 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 =@"Completed";
            CompleteLabel.textAlignment = NSTextAlignmentRight;
            [cell.contentView addSubview: CompleteLabel];
            [CompleteLabel release];
        }
            return cell;
    }

UpdateArray()

 -(void)updateArray{

   while (loop)
   {
        [NSThread sleepForTimeInterval:4.0];

        [FileCompletedArray removeAllObjects];
     // [temp 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); 
           // 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])
            {
                [temp removeAllObjects];
                temp= [FileCompletedArray mutableCopy];
                [_tableView reloadData];
            }
            else
            {
               NSLog(@"2 array equal");
            }
   //});
        }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                              NSLog(@"error: %@", error);

                                          }
         ];
        [httpClient enqueueHTTPRequestOperation:operation];
   }
}

手伝って頂けますか?前もって感謝します。

4

3 に答える 3

1

あなたが reloadData を呼び出していることはわかりません。

編集:

それを確認する必要があります

1-Temp にはオブジェクトがあります。つまり、[temp count] がゼロを返さないということです。

2 - 2 つの配列をチェックする if 条件がトリガーされます。リロードデータが呼び出されるということです。

3-cell.contetview addsubview の後にブレークポイントを作成して、現在セルに何が含まれているかを確認できますか?

于 2013-07-04T09:00:19.283 に答える
0

テーブル ビューを更新する場合は、次の行を試して確認してください。

[[self mytableview] reloadData];

mytableview は、ここで tableview オブジェクトを指定する tableview の obj です。

于 2013-07-04T09:49:13.810 に答える
0

電話する前に

[_tableView reloadRowsAtIndexPaths:[_tableView indexPathsForVisibleRows]
                                 withRowAnimation:UITableViewRowAnimationNone];

あなたは電話しなければなりません

[_tableView beginUpdates];
...
[_tableView endUpdates];

または電話する

[_tableView reloadData];
于 2013-07-04T09:03:41.513 に答える