在我的应用程序中,我有一个决定如何填充 tableView 的开关。如果选择一侧,它将显示 xml 提要中的所有项目,而如果选择另一侧,它将仅显示已下载到设备的项目。首次打开应用时,默认显示所有项目,所有行都可以选择没有问题,选择显示下载时,也可以全部选择没有问题;但是,当返回“全部显示”时,如果您选择了更下方的表格单元格,则应用程序将崩溃。只有当您选择的行比下载的项目数更远时它才会崩溃,所以我怀疑这与 numberOfRowsInSections 调用有关,但我似乎无法终生修复它!
这是我在该方法中的代码:
- (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] 处检查文件,然后确保表格中填充了下载内容,而不是所有项目。感谢大家的帮助!