2013-02-16 3 views
1

У меня есть вид таблицы, который встроен внутри обычного контроллера представления (который встроен внутри навигационного контроллера.)IOS, Tableview не отображающие секции

Вообще говоря, вызывая методы, такие как tableView:numberOfRowsInSection:, tableView:titleForHeaderInSection и tableView:cellForRowAtIndexPath: работают нормально, они видны и функционируют должным образом.

Теперь возникает проблема отображения разделов. По какой-то странной причине метод numberOfSectionsInTableview:: не видно, когда программа запускается. Я проверил это, вставив NSLog, а также вставив точки останова. Внутри этого метода ничего не распознается. При вызове для отображения разделов (я организую все это через NSFetchedResultsController) он отображает только первую секцию, когда она в настоящее время должна отображать 5 (потому что numberOfSectionsInTableview не требуется и по умолчанию равен 1.)

Я думаю, что это происходит из-за того, что мой tableView встроен в контроллер представления, а не на самом деле является контроллером tableview. Но если это так, почему мне не нужно делать что-то особенное для других методов tableView:? Насколько я могу судить, sectionInfo часть кода (внутри NSFetchedResultsController) настроена правильно, так как другие section методы работают должным образом (поместить NSLog внутри каждого, чтобы убедиться, метод называется.)

Любая помощь вам может дать при понимании и/или исправлении этой проблемы, будем очень благодарны! Дайте мне знать, если вам нужна дополнительная информация о моем коде.

EDIT

Вот весь код, я использую, как он относится к этой области:

- (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]; 
} 
+0

К сожалению, 'tableView' является параметром ..' - (NSInteger) numberOfSectionsInTableview: (UITableView *) tableView {retrun [[self.fetchedResultsController sections] count]; 'Это полный метод, который я использую –

+0

, вы уверены, что этот метод вызывается еще? Вы проверили, поставив точку останова? –

+0

@ Да, я вставлял точки останова, а также вставил 'NSLog'. Это * не *, вызываемый, что является проблемой, с которой я сталкиваюсь. –

ответ

2

Оказывается капитализация в numberOfSectionsInTableView, где v не капитализируются.

+0

Питер, вы УДИВИТЕЛЬНЫЙ человек! Если бы я мог дать вам больше очков за все усилия, чтобы поболтать и посмотреть через свои исходные файлы, чтобы найти простую строчную букву, тогда я бы ... Спасибо за вашу помощь, мой человек! –

+0

Нет проблем, всегда используйте autocomplete :) –

+0

Хотелось бы восстановить мой первый комментарий :-P –

Смежные вопросы