2011-08-21 77 views
0

我想知道是否有可能将NSFetchedResultsController与自定义标头组合?结合NSFetchedResultsController与自定义标头

这里是sdandard方式:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { 
    return [myFetchedResultsController sectionForSectionIndexTitle:title atIndex:index]; 

这里就是我试图建立

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 23)] autorelease]; 

    //set the background 
    UIImageView* TopBarHeader = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 23)] autorelease]; 
    [TopBarHeader setImage:[UIImage imageNamed:@"barre_separation_bg.png"]]; 

    //set the shadow 
    [[TopBarHeader layer] setShadowColor:[[UIColor blackColor] CGColor]]; 
    [[TopBarHeader layer] setShadowOffset:CGSizeMake(1.0f, 3.0f)]; 
    [[TopBarHeader layer] setShadowOpacity:0.5f]; 
    [[TopBarHeader layer] setShadowRadius:1.0f]; 


    [headerView addSubview:TopBarHeader]; 


    //set the text 
    UILabel *textHeader = [[[UILabel alloc] initWithFrame:CGRectMake(11, 0, 320, 20)] autorelease]; 
    [textHeader setText:[myFetchedResultsController sectionForSectionIndexTitle:title atIndex:index]]; 
    [textHeader setTextColor:[UIColor colorWithRed:(124/255.0) green:(132/255.0) blue:(137/255.0) alpha:1]]; 
    [textHeader setBackgroundColor:[UIColor clearColor]]; 
    [headerView addSubview:textHeader]; 

    return headerView; 
} 

我怎样才能使工作这一行?

[textHeader setText:[myFetchedResultsController sectionForSectionIndexTitle:title atIndex:index]]; 

回答

1

我已经找到一种方法

[textHeader setText:[[[myFetchedResultsController sections] objectAtIndex:section] name]]; 
1

我认为你的方向是错的。 sectionForSectionIndexTitle:用于返回与标题和索引对应的部分编号,而在您的情况下,您需要与索引对应的部分标题。你不需要问NSFetchedResultsController。您可以简单地在您的UITableViewController子类中添加一个方法。喜欢 -

-(NSString*) sectionHeaderForIndex: (NSInteger)section 
{ 
    switch(section) 
    { 
     case 0: 
      return @"name of section 0"; 
     case 1: 
      return @"name of section 1"; 
     //and so on... 
    } 

    assert(NO); 
    return nil; 
} 

然后,

[textHeader setText:[self sectionHeaderForIndex:section]]; 
+0

目标东西TU使用NSFetchedResultsController。我找到了一个方法,如果你有兴趣,我会将它发布。 –