2011-08-30 163 views
0

當我滾動UITableView它崩潰的應用程序。這是代碼。UITableView滾動崩潰應用程序

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
NSDictionary *tempDict = [albums objectAtIndex:indexPath.row]; 

static NSString *CellIdentifier = @"ImageCell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} else { 
    AsyncImageView *oldImage = (AsyncImageView *)[cell.contentView viewWithTag:999]; 
    [oldImage removeFromSuperview]; 
} 

我設置的斷點,並停靠在行

NSDictionary *tempDict = [albums objectAtIndex:indexPath.row]; 

我到底做錯了什麼? 在此先感謝。

+0

這是什麼'tempDict' var? – 2011-08-30 12:30:15

+0

你的「專輯」是否與你的行一樣多? – phi

+0

你會得到什麼錯誤? – Dancreek

回答

0

我解決了這個問題。實際上,在$ cellForRow中,我試圖從服務器獲取信息,我沒有在那裏應用延遲加載。因爲在滾動tableView時,應用程序崩潰了。

謝謝大家的幫助。

0

查詢大小相冊數組。可能是它比indexPath.row小或它在某處發佈。

+0

相冊數組的大小是3.從這我檢索NSDictionary * tempDict = [albums objectAtIndex:indexPath.row]; – Harsh

+0

你想顯示多少個單元格?什麼返回'numberOfRowsInSection'?嘗試在'..tempDict = ..'之前添加'NSLog(@「%d」,indexPath.row)''。什麼將被打印? – Nekto

+0

行數應該等於[專輯數量]。和NSLog(@「%d」,indexPath.row)給了我0,1,2。而我的[專輯數]也會返回3. – Harsh

0

確保你沒有讀出你的NSdictionary的邊界。

檢查您在tableView:numberOfRowsInSection: dataSource方法中的返回值。

+0

專輯屬於NSArray類型。從那我寫代碼NSDictionary * tempDict = [albums objectAtIndex:indexPath.row];在NSDictionary中獲取對象。 – Harsh

+0

@Harsh控制檯是否返回任何錯誤? –

1

我不確定,首先請檢查總行數和你的數組數量。它們必須相同。如果仍然崩潰然後把此行

NSDictionary *tempDict = [[albums objectAtIndex:indexPath.row] copy]; 
0

最可能的原因是該線路上的崩潰是你的表視圖比你在你的相冊數組項多行。通常情況下,在這樣的設置中,你有完全一樣的號碼在你的表中的行,和你的-tableView的實現:numberOfRowsInSection:應該是這樣的

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // assuming that there is only one section 
    return [albums count]; 
}