NSFetchedResultCintroller с разделами + UITableView + 2 дополнительные строки - PullRequest
1 голос
/ 12 марта 2011

Я пытаюсь добавить две дополнительные строки в мой UITableView.Данные поступают из FetchResultsController с разделами.Я попробовал приемы, которые обычно работают с массивом, но не с FetchResultsController с разделами.Простое добавление +2 к числу чисел не помогает.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
     return ([[fetchedResultsController sections] count]+2);
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
    return ([sectionInfo numberOfObjects]+2);
}

и контроллер выборки:

- (NSFetchedResultsController *)fetchedResultsController {
    // Set up the fetched results controller if needed.

    if (fetchedResultsController != nil) {
        return fetchedResultsController;
    }

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"eventsEntity" inManagedObjectContext:managedObjectContext];
    [request setEntity:entity];


    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"eventName" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptors release]; 
    [sortDescriptor release];

    NSFetchedResultsController *fetchedResultsController1 =
    [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                        managedObjectContext:managedObjectContext
                                          sectionNameKeyPath:@"eventName" cacheName:nil];


    self.fetchedResultsController = fetchedResultsController1;
    fetchedResultsController.delegate = self;

    [request release];
    [fetchedResultsController1 release];

    return fetchedResultsController;
} 

1 Ответ

2 голосов
/ 12 марта 2011

Сначала попытайтесь понять различные понятия: секции содержат строки .

Так что если вы хотите добавить две строки Вы можете добавить их в существующий раздел или добавить другой раздел и поместить в него две строки.

Вероятно, это будет самое чистое решение, поэтому сделка такова:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return ([[fetchedResultsController sections] count]+1); // +1 for your section
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSArray *sections = [fetchedResultsController sections];

    if ( section < [sections count] )
    {
        // the normal case, e.g. sections 0,1,2 of section.count==3
        id <NSFetchedResultsSectionInfo> sectionInfo = [sections objectAtIndex:section];
        return [sectionInfo numberOfObjects];
    } else {
        // your own section, e.g. the 4th section, where the FRC returned 3 sections
        return 2;
    }
}

Конечно, аналогичные поправки необходимы в методе, который возвращает ячейки, заголовки, высоту строк и т. Д. И т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...