2011-04-17 47 views
0

尋找有關如何正確加載分組表格視圖的幫助。我正在使用以下代碼加載我認爲應爲「cellForRowAtIndexPath」準備數組「細節」的數據。然而,當我運行程序時,我得到了所有組的相同數據,它恰好是我數據中的最後一行(在NSArray中稱爲「用戶」)。顯然我做錯了什麼,但不知道什麼...請幫助。組表查看 - 加載數據

// Customize the number of rows in the table view. 

- (NSInteger的)的tableView:(UITableView的*)的tableView numberOfRowsInSection:(NSInteger的)部分{

NSRange aRange; 
aRange.length = 9; aRange.location = 16; 
NSString *users = [self.Users objectAtIndex: section]; 
NSString *subtitle = [NSString stringWithString:[users substringWithRange:aRange]]; 
details = [[NSArray arrayWithObjects:subtitle, subtitle, subtitle, nil] retain]; 

return [details count]; 

}

的數據加載程序如下:

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

static NSString *CellIdentifier = @"Cell"; 

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

// Configure the cell. 
UIImage *cellImage = [UIImage imageNamed:@"world.png"]; 
cell.imageView.image = cellImage; 
cell.textLabel.text = [details objectAtIndex:indexPath.row]; 
return cell; 

}

回答

0

從您發佈的內容中可以看出,details數組在每次表視圖詢問其數據源中的某一節中的行數時正在被重置。 details最後設置爲-tableView:numberOfRowsInSection:最後一次被調用時,即最後一段。一旦設置,相同的陣列爲所有部分提供cell.textLabel.text的數據。所以你得到不正確的數據。

將所有details陣列計算並存儲在不同的陣列中,例如detailsArray將是適當的。然後
的數據可以訪問他們像
[[detailsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]

與您的代碼的另一個問題是,每次numberOfRowsInSection被調用時,數據被泄露作爲details正在復位而不釋放較早的對象。