iOS tableView不显示部分

时间:2013-02-16 06:23:48

标签: ios objective-c cocoa-touch

我有一个嵌入常规视图控制器(嵌入在导航控制器中)的表视图。

一般来说,tableView:numberOfRowsInSection:tableView:titleForHeaderInSectiontableView:cellForRowAtIndexPath:等调用方法运行正常,可以正常使用....

现在出现了显示部分的问题。出于某种奇怪的原因,方法运行时,方法numberOfSectionsInTableview: 被看到。我通过插入NSLog以及插入断点来测试这一点。在这种方法中没有任何东西被认可。在调用显示部分时(我通过NSFetchedResultsController组织它),它只显示当前应显示的第一部分5(因为numberOfSectionsInTableview不是必需的,默认为1。)< / p>

我认为这种情况正在发生,因为我的tableView嵌入在视图控制器中而不是实际上是一个tableview控制器。但如果是这样的话,为什么我不需要为其他tableView:方法做任何特别的事情呢?我可以告诉我,代码的sectionInfo部分(在NSFetchedResultsController内部)已正确设置,因为其他section方法正常工作(将NSLog放在每个方法中以确保调用该方法。 )

非常感谢您在理解和/或纠正此问题时提供的任何帮助!如果您需要有关我的代码的更多信息,请与我们联系。

修改

以下是我使用的所有代码,因为它与此字段相关:

- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController == nil) {

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ActiveList" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"category" ascending:YES];
    NSSortDescriptor *sortDescriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];

    //[fetchRequest setSortDescriptors:@[ sortDescriptor1, sortDescriptor2 ]];

    // Only retrieves items where 'isActive' SQLite field is '1' or 'YES'
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isActive == %@", [NSNumber numberWithBool:YES]];
    [fetchRequest setPredicate:predicate];

    [fetchRequest setFetchBatchSize:20];

    fetchedResultsController = [[NSFetchedResultsController alloc]
                              initWithFetchRequest:fetchRequest
                              managedObjectContext:self.managedObjectContext
                              sectionNameKeyPath:@"category"
                              cacheName:@"ActiveLists"];


    fetchedResultsController.delegate = self;
}
return fetchedResultsController;
}

- (void)performFetch {

NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
    FATAL_CORE_DATA_ERROR(error);
    return;
}
}

- (void)viewDidLoad
{
[super viewDidLoad];


[self performFetch];

}

- (NSInteger)numberOfSectionsInTableview:(UITableView *)tableView {
return [[self.fetchedResultsController sections] count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
}

1 个答案:

答案 0 :(得分:2)

原来是numberOfSectionsInTableView中的大写,其中v没有大写。