текст ячейки для двух динамически разделов - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть два tableView раздела, иногда в первом разделе нет данных, поэтому второй теперь идет первым.

В моем методе numberOfSectionsInTableView я считаю свой первыймассив:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.firstArray.count == 0) {
    numberOfSections = 1;
} else {
    numberOfSections = 2;
}
return self.numberOfSections;

numberOfSections это int в моем заголовочном файле.

и вот как я настраиваю свой текст для ячеек

switch (indexPath.section) {
    case 0:
    {
        MyClass *inFirstArray = [appDelegate.firstArray objectAtIndex:indexPath.row];
        cell.detailTextLabel.text = inFirstArray.title;
        break;
    }
    case 1:
    {
        Event *inSecondArray = [appDelegate.secondArray objectAtIndex:indexPath.row];
        cell.detailTextLabel.text = inSecondArray.title;
        break;    

    default:
        break;
    }

}

Проблема в том, что если мой счетчик firstArray равен 0, у меня нет текста в моем secondArray ...

UPDATE

Также есть эти методы

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{

    //I'm realeasing it into dealloc
    sectionTitles = [[NSMutableArray alloc] init];

    [sectionTitles addObject:@"first ArrayTitle"];
    [sectionTitles addObject:@"second ArrayTitle"];
    NSString *sectionText = [sectionTitles objectAtIndex:section];
    return sectionText;
}

и

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    //Adding a custom background image for table section header
    NSString *title = [times objectAtIndex:section];
    UIView *customView = [ [ [UIView alloc] initWithFrame: CGRectMake(0.0, -5.0, 320.0, 25.0) ] autorelease ];
    [customView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBackground.png"]]];
    UIButton *button = [ [ [ UIButton alloc ] initWithFrame: CGRectMake(-9.0, 5.0, 320, 27.0) ] autorelease ];
    button.tag = section;
    [button setImage:[UIImage imageNamed:@"header_section_background.png" ] forState: UIControlStateNormal ];
    button.highlighted = NO;
    button.adjustsImageWhenHighlighted = NO;
    UILabel *label = [ [ UILabel alloc ] initWithFrame:CGRectMake(15.0, 5.0, 45, 22.0) ];
    label.alpha = 1.0;
    label.backgroundColor = [UIColor clearColor];

    label.text = title;
    label.textAlignment = UITextAlignmentRight;

    [customView addSubview: button ];
    [customView addSubview:label ];
    [customView sendSubviewToBack:button];

    return customView;
}

1 Ответ

1 голос
/ 11 ноября 2011

Всегда возвращайте 2 для вашего numberOfSections. Для вашего numberOfRowsInSection сделайте следующее:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
    if (section == 0)
        return [appDelegate.firstArray count];
    else
        return [appDelegate.secondArray count];
}

Таким образом, ваши два раздела всегда будут существовать, но будут иметь нулевые строки, если для них нет данных.

...