0

我花了数周时间试图让部分和行在我的表中工作,并最终做到了!接下来我注意到,即使我有大量数据要查看,我也无法向下滚动超过屏幕上第一次显示的内容。此外,滚动条似乎比平时更粗,右上角显示了一个数字 2。

不知道我做错了什么。有人可以引导我朝正确的方向轻推我吗?我无法捕捉到胖滚动条,但它肯定比它应该的要宽。

- (void)setupFetchedResultsController  {

    NSString *entityName = @"Regster";

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];


    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"addDate" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Regster" inManagedObjectContext:self.managedObjectContext];

    [request setEntity:entity];
    [request setResultType:NSDictionaryResultType]; 
    [request setReturnsDistinctResults:YES];
    //[request setFetchBatchSize:2];

    self.fetchedResultsController.delegate = nil;

    [request setPropertiesToFetch:[NSArray arrayWithObjects:@"addDate", @"regType", nil]];


    NSString *query = self.selectedAccounts.name;
    request.predicate = [NSPredicate predicateWithFormat:@"inAccounts.name CONTAINS[cd] %@", query];        


    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"addDate" cacheName:nil];

    [self performFetch];  

    NSError *error = nil;
    NSUInteger count = [_managedObjectContext countForFetchRequest:request error:&error]; 

}  


- (void)viewWillAppear:(BOOL)animated  {
    [super viewWillAppear:animated];
    [self setupFetchedResultsController];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return [[self.fetchedResultsController sections] count];

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    id sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  {

    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo name];

} 

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

    static NSString *CellIdentifier = @"Account Register";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)  {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    [self.tableView setScrollEnabled:YES];    

    NSDictionary *regtype = [self.fetchedResultsController objectAtIndexPath:indexPath];

    cell.textLabel.text = [regtype objectForKey:@"regType"];

    return cell;
}

在此处输入图像描述 EDIT1:更改 fetchedResultsController 的 sectionNameKeyPath 的 @"addDate" 会导致删除日期和部分,留下一个部分并且滚动工作正常。离开 @"addDate" 可以满足我对部分的要求,但我不明白为什么它不会随着 2 和“胖”滚动而滚动。

EDIT2:我发现了我的问题......我从另一个教学课程中借用了代码来让我的 CoreDataTableViewController 工作,并且它已经实现了 sectionIndexTitlesForTableView。已注释掉并且正在工作!

4

2 回答 2

0

很难看不到您的代码或不了解数据是什么。但我能帮上一点忙。

角落里的 2 是你的表格视图的部分索引列(这也可能是你所说的胖滚动条的意思)。您有 2 个以数字 2 开头的部分。如果部分标题是单词,您会看到按字母顺序排列的索引。

索引仅显示 1 个值这一事实可能意味着您的表格视图未显示您期望的完整数据集,仅显示屏幕上的 2 个部分。

也许显示一些代码?即使只是设置代码也可能会有所帮助。通常,CoreDataTableViewController 需要一个 NSFetchedResultsController、一个标题键等等。显示其中一些代码可能会提供更多线索。

于 2012-07-22T02:14:39.733 回答
0

我发现了我的问题......我从另一个教学课程中借用了代码来让我的 CoreDataTableViewController 工作,并且它已经实现了 sectionIndexTitlesForTableView。做了一些大规模的搜索,发现这在某个地方出现了。注释掉 sectionIndexTitlesForTableView 方法,它工作得很好!

于 2012-07-27T15:39:57.900 回答