0

グループ化されたテーブルビューのヘッダーに表示したい3つの文字列があります。問題は、この文字列をに追加し、tableView titleForHeaderInSection各文字列を異なる色とフォントで異なる行に表示したいということです。

現在私が持っているのは:

ここに画像の説明を入力してください

私が欲しいのは:

ここに画像の説明を入力してください

これらの3つの文字列を次のように取得して追加します

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

    NSString * presenter = [[self agenda] getBriefingPresenter:section];
    NSString * time = [[self agenda] getBriefingTime:section];
    NSString * subject = [[[[self agenda] getMeetingBriefings] objectAtIndex:section] objectForKey:@"subject"];

    return [NSString stringWithFormat:@"%@\n%@  %@", subject, time, presenter ];

}

ヘッダーフォントを処理する方法

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) {
        return nil;
    }

    // Create label with section title
    UILabel *label = [[UILabel alloc] init];
    label.frame = CGRectMake(45, 0, 484, 23);
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont fontWithName:@"Century Gothic" size:17];
    label.text = sectionTitle;
    label.lineBreakMode = UILineBreakModeWordWrap;
    label.numberOfLines = 2;
    [label sizeToFit];
    label.backgroundColor = [UIColor clearColor];

    // Create header view and add label as a subview
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 300, 320, 400)];
    [view addSubview:label];

    return view;
}

では、これを解析して sectionTitle、3行に3つの異なるラベルとして印刷するにはどうすればよいでしょうか。

4

1 に答える 1

2

(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section、特定のフォントと色で3つの異なるラベルを作成します。1つのUILabelに異なるフォント/色を設定することはできません。

だからあなたのコードは更新されました:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    NSString * presenter = [[self agenda] getBriefingPresenter:section];
    NSString * time = [[self agenda] getBriefingTime:section];
    NSString * subject = [[[[self agenda] getMeetingBriefings] objectAtIndex:section] objectForKey:@"subject"];

    // Create label with section title
    UILabel *presenterLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, 0, 484, 23)];
    presenterLabel.textColor = presenterColor;
    presenterLabel.font = presenterFont;
    presenterLabel.text = presenter;
    presenterLabel.backgroundColor = [UIColor clearColor];
    [presenterLabel sizeToFit];

    UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, presenterLabel.frame.size.height, 484, 23)];
    timeLabel.textColor = timeColor;
    timeLabel.font = timeFont;
    timeLabel.text = time;
    timeLabel.backgroundColor = [UIColor clearColor];
    [timeLabel sizeToFit];

    UILabel *subjectLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, timeLabel.frame.origin.y + timeLabel.frame.size.height, 484, 23)];
    subjectLabel.textColor = subjectColor;
    subjectLabel.font = subjectFont;
    subjectLabel.text = subject;
    subjectLabel.backgroundColor = [UIColor clearColor];
    [subjectLabel sizeToFit];


    // Create header view and add label as a subview
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
    [view addSubview:presenterLabel];
    [view addSubview:timeLabel];
    [view addSubview:subjectLabel];

    return view;
}

そして、あなたは必要ありません- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection: (NSInteger) section

于 2012-09-18T22:14:46.703 に答える