2011-03-12 75 views
1

我想添加两个额外的行到我的UITableView。数据来自带有部分的FetchResultsController。我已经尝试了通常与数组一起工作的技巧,但他们没有使用带有节的FetchResultsController。只需在numberofrows中添加+2不会有帮助。NSFetchedResultCintroller与部分+ UITableView + 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); 
} 

和fetchresultcontroller:

- (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; 
} 

回答

2

第一次尝试获得的不同概念graps:部分包含

所以,如果你想添加两个,你可以将它们添加到现有的部分,或添加另一个部分,并在该部分放两行。

这可能会是干净的解决方案,所以这里的交易:

- (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; 
    } 
} 

当然,需要在返回细胞,标题,行高的方法,等等等等类似的修订

+0

感谢mvds,现在我明白了...... – 2011-03-12 12:26:44