UiTableViewは何らかの理由の同じセルをロードしています -- iphone フィールド と uitableview フィールド 関連 問題

UITableView is loading the same cells of some reason












0
vote

問題

日本語

私は、カスタムセルをロードし、サーバー上のJSON文字列からデータをロードする。 JSON文字列は、14 ID(ID_Array)の配列に解析されます。

cell==nil の場合は、 [id_array objectAtIndex:indexPath.row] を使用してIDを取得し、その行についての情報を取得し、セルのラベルを設定します。画像。

アプリを実行するとき、UiTableViewが表示されている行をロードしています[0,1,2,3,4](セルの高さは70pxです)。 TableViewを下にスクロールするときは、ROW [5]がロードされてサーバーからデータを取得しますが、問題はその点を超えて、新しい行のためにサーバーから新しいデータを要求するのではなく、それらの6行を繰り返しています...

しかし、最初に実行されたときに表示されない(そしてロードされていない)行[5]の新しいデータを要求します。

だれでも、これが起こっているのはなぜですか? ありがとう!

編集:ここでMy CellForRowAtIndexPathメソッド

<事前> <コード> - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CustomCell"; CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; for (id currentObject in topLevelObjects) { if ([currentObject isKindOfClass:[UITableViewCell class]]) { cell = (CustomCell *)currentObject; NSString *appsURL = [NSString stringWithFormat:@"http://myAPI.com?id=%@",[app_ids objectAtIndex:indexPath.row]]; NSLog(@"row -> %d | id -> %@",indexPath.row,[app_ids objectAtIndex:indexPath.row]); NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:appsURL]]; [cell updateAppInfoForCellWithRequest:request]; break; } } } // Configure the cell... return cell; }
英語

I have a TableView loading a custom cell and loading the data from a JSON string on a server. The JSON string is parsed to an array of 14 IDs (id_array).

If cell==nil, then I'm using [id_array objectAtIndex:indexPath.row] to get an ID and fetch some more info about for that row from a server, and set up the cell's labels and image.

When running the app, the UITableView is loading the visible rows [0,1,2,3,4] (cell height is 70px). When scrolling down the TableView, row [5] is loaded and fetching data from the server, but the problem is that beyond that point - the TableView is repeating those 6 rows instead of requesting new data from the server for the new rows...

But it does request new data for row [5], which is not visible (and not loaded) when the app first runs.

Anyone have any idea why is this happening? Thanks!

EDIT: Here is my cellForRowAtIndexPath method

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {            static NSString *CellIdentifier = @"CustomCell";     CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];      if (cell == nil) {         NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];          for (id currentObject in topLevelObjects) {             if ([currentObject isKindOfClass:[UITableViewCell class]]) {                 cell = (CustomCell *)currentObject;                  NSString *appsURL = [NSString stringWithFormat:@"http://myAPI.com?id=%@",[app_ids objectAtIndex:indexPath.row]];                 NSLog(@"row -> %d | id -> %@",indexPath.row,[app_ids objectAtIndex:indexPath.row]);                 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:appsURL]];                 [cell updateAppInfoForCellWithRequest:request];                  break;             }         }     }      // Configure the cell...      return cell; } 
</div
     
       
       

回答リスト

3
 
vote
vote
ベストアンサー
 

99887776615 の場合にのみデータを設定している場合は、問題です。 utableはテーブルビューセルのキャッシュを構築し、セルがnilの場合にのみ新しいものを作成します。したがって、を毎回データを設定する必要があります。 $item['link']616 ブロックの外側。

以下の例はそのプロセスを示しています。まず、プールからセルをつかみます。フリーセルがない場合は、新しいセルを作成します。適切な行のセルの値を設定します。

<事前> <コード> items_data['col_def'] = items_data['col_a'][~items_data['col_a'].isin(items_data['col_b'])] 7
 

If you are setting data only if cell==nil, then that is your issue. UITable builds a cache of table view cells, only creating a new one if cell is nil. Therefore, you must set your data each time, i.e. outside of the cell==nil block.

The example below shows that process. First, grab a cell from the pool, if there isn't a free cell, create a new one. Set the cell's values for the appropriate row.

- (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];     }      id someData = [id_array objectAtIndex:indexPath.row]      cell.textLabel.text = [someData someString];      return cell; } 
</div
 
 
       
       

関連する質問

0  CellForRowAtIndexPathが遅すぎると呼びました  ( Cellforrowatindexpath called too late ) 
Webから取得するデータをたびにテーブルを再ロードしようとしています。これが私が持っているものです: <前> SearchDataViewController: <コード> - (void)parseDataXML { parsingDelegat...

1  UITableViewStyleGrouped TableViewsのセルのカスタム幅  ( Custom width for cell in uitableviewstylegrouped tableviews ) 
iPhone SDKでは、UiveViewStyleGroungedのスタイルを持つテーブルビュー内のセルの幅をカスタマイズする方法はありますか? 問題は、Cell.BackgroundViewのカスタム背景画像(290pxの幅290px)を使用しているが、...

7  グループ化されたUITableViewCellのコントロールを並べ替えるのに白い線を取り除く  ( Remove white line next to reorder control on grouped uitableviewcell ) 
私は、より暗いUIとカスタムAccessoryViewを持つテーブルのためのカスタムUIを構築しました。テーブルを編集モードに入れると、除去されていないように見えないように見えるコントロールの左側に白い線があります。 TableView:abseoRyt...

4  Interface Builderでめちゃくちゃにすることなく変換で和解を正しく回転させる  ( Correctly rotating a uitableview with transform without messing around with inte ) 
uibiteviewは横長モードで水平スクロールを提供しません。 私のUibleViewはフルスクリーンではありません(私のコンテンツを回転しながら水平モードを使用することはできません。) 私はトランスフォームを使って私の不気味なビューを回転させることがわか...

15  UITableViewControllerを使用したUiableViewサブクラスを使用する  ( Using a uitableview subclass with a uitableviewcontroller ) 
通常の UITableView tableView のマイカスタム<コード> 99887661 サブクラスを使用するように私の $(document).ready に指示する方法>? ...

3  カスタムUiveViewCellの背景は選択後に透明になります  ( Custom uitableviewcell background goes transparent after selection ) 
<コード> UITableView プレーンスタイルテーブルのカスタムセルの1つを選択して保持するときは、カスタム選択色(<コード> redColor )を表示しますが、次に、カスタム選択カラーとを押し続けている場合、カスタムの背景は消えます(表の後ろの<コ...

5  UITableViewにカスタムEditingAccessoryViewを追加する方法  ( How to add custom editingaccessoryview for uitableview ) 
セルにカスタムeditingAccessoryViewを追加したい場合は、削除ボタンの代わりにユーザースワイプすると、カスタムビューを表示します。 ...

1  iPhoneアプリでuibiteviewsのデータを取得するためのどのコントローラですか?  ( Which controller to get data for uitableviews in iphone app ) 
私は顧客のテーブルビューを備えたCoustauctionViewControllerを持っています。顧客(DidSelectrowatIndexPath)をクリックすると、OrdereViewControllerがその顧客の注文の表ビューを表示します。私は今の...

7  UitabbarControllerの内部のUInavigationControllerに関する問題、ViewWillAppearが呼び出されません  ( Problems with uinavigationcontroller inside of uitabbarcontroller viewwillappea ) 
概要として、ビューがスタックからポップされるたびに、viewWillAppearを呼び出すUITabBarControllerの内部にあるUinavigationControllerに関する問題があります。 デリゲートから、UitabbarControlle...

0  UITableViewControllerのセクションヘッダーの背景画像を使用する方法?  ( How to use an background image for the section header in the uitableviewcontroll ) 
こんにちは 私はUITEMITVERCOTROLLERを持っています。ここで、セクションヘッダーも使用しています。 今すぐ画像をバックグラウンドとして使用する機会はありますか? ありがとう ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有