在我的應用程序中,我有一個開關,決定如何填充tableView。如果選擇了一面,它將顯示來自xml源的所有項目,而如果選擇了另一面,則只顯示已下載到設備的項目。首次打開應用程序時,默認情況下會顯示所有項目,並且所有行可以毫無問題地進行選擇,並且在選擇顯示下載時,所有選項都可以無問題地進行選擇;但是,當返回到「全部顯示」時,如果選擇更遠的表格單元格,則應用程序將崩潰。它只會在你選擇一個更下面的行數下載時崩潰,所以我懷疑這與numberOfRowsInSections調用有關,但我無法爲我的生活似乎修復它!UITableView崩潰行選擇
這裏是一個方法中我的代碼:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (showDownloadsSwitch.selectedSegmentIndex == 0){
rows = itemsToDisplay.count;
}
else if (showDownloadsSwitch.selectedSegmentIndex == 1){
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0]
stringByAppendingPathComponent:@"downloads"];
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path
error:&error];
rows = fileList.count;
}
return rows;
}
編輯:
我能夠多一點檢查後進行修復。原來我在[downloads objectAtIndex:indexPath.row]中檢查了一個文件,然後確保表中填充了下載,而不是所有項目。感謝大家的幫助!
你是什麼確切的錯誤? –
你也應該添加你的選擇邏輯。看起來你的'rows'變量沒有在本地聲明......這是一個成員變量嗎? – Justin
它撞上了什麼?請提供確切的錯誤,並考慮添加堆棧跟蹤。 –