2012-04-13 11 views
0

私のアプリケーションでは、アイテムを表示します。私のJSONフィードには50個の項目が含まれていますが、最初に25個を表示したいと思います。ユーザーが最後の行までスクロールすると、より多くの項目をロードする必要があります。最後の行を検出して1つ追加する

私がやっている:

JSONフィードをダウンロードします。

NSString *jsonString = [NSString 
         stringWithContentsOfURL:[NSURL URLWithString:xmlDataUrl] 
         encoding:NSStringEncodingConversionAllowLossy 
         error:nil]; 
SBJSON *parser = [[SBJSON alloc] init]; 
NSDictionary *results = [parser objectWithString:jsonString error:nil]; 
parser = nil; 
[self setTableData:[results objectForKey:@"feed"]]; 

//

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

//

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     // Return the number of rows in the section. 
     //return [tableData count]; 
     return 25; 
    } 

そして、最後の行の検出:

if(indexPath.row == [self.tableData count] - 1) 
    { 

     NSLog(@"Last Row"); 
    } 

をしかし、それは最後の行を検出していません。これはダウンロードしているJSONに25以上の行が含まれているためですか?

新しい行を追加するには、[self.tableDate count] +1;のようなものがありますか?

私はそれが最後の行を検出していますが、行はすでにどこのコードの第二のブロックを呼び出している25/50と

+0

セクション内の行数として25をハードコードするので、行を追加することはできません。 –

+0

できます。 'return [tableData count];;'しかし、それはすべてのアイテムを表示してダウンロードします。 – Jones

答えて

2

+1よりも私は表示する必要が100%満たされている[tableData count];を返さない場合は?それはあなたのテーブルデリゲートのwillDisplayCell:メソッドですか?私のプロジェクトの一つで

、私は非常によく似たコードself.search用に作成されたものの後に追加の余分な行で

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == self.search.count && [tableView.indexPathsForVisibleRows containsObject:indexPath]) 
    { 
     [self.search findMoreStuff]; 
    } 
} 

を持っているので、私の場合、私はself.search.countをチェックしていますself.search.count-1を見たいと思うかもしれません。

+0

2番目のコードブロックではどういう意味ですか? 「最後の行」の部分? forRowAtIndexPathにあります。 – Jones

+0

申し訳ありませんが、if(indexPath.row == [self.tableData count] - 1) 行です。それはwillDisplayCellで呼び出される必要があります: –

関連する問題