Объедините NSFetchedResultsController с пользовательским заголовком - PullRequest
0 голосов
/ 22 августа 2011

Я хотел бы знать, возможно ли объединить 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]];

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Я нашел способ

[textHeader setText:[[[myFetchedResultsController sections] objectAtIndex:section] name]];
1 голос
/ 22 августа 2011

Я думаю, что вы движетесь в неправильном направлении.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]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...