1

このコードをUITableViewControllerに追加して、灰色のヘッダーセクションを返しました。

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
   [headerView setBackgroundColor:[UIColor grayColor]];
    return headerView;
}

ただし、これを行うと、ヘッダー文字が表示されなくなります...これをサブビューとして追加する必要がありますか?または物事を行う別の方法はありますか?

UITablViewにヘッダーとヘッダーテキストを追加するこれらのメソッドがありますが、上記のメソッドを使用すると、それらが表示されなくなります。

// Section headers
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{    
    return [sectionLetterArray objectAtIndex:section];
}

// Section header titles
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return sectionLetterArray;
}
4

2 に答える 2

7

独自の を作成する場合tableView:viewForHeaderInSectionは、UILabel などを作成し、自分でテキストを入力する必要があります。たとえば、次のようになります。

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

    // Add the label
    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(kSectionTitleLeftMargin, 
                                                                     kSectionTitleTopMargin, 
                                                                     tableView.bounds.size.width - kSectionTitleLeftMargin - kSectionTitleRightMargin, 
                                                                     30.0 - kSectionTitleTopMargin - kSectionTitleBottomMargin)];

    // do whatever headerLabel configuration you want here

    headerLabel.text = [self tableView:tableView titleForHeaderInSection:section];
    [headerView addSubview:headerLabel];

    // Return the headerView
    return headerView;
}

明らかに、必要に応じて headerLabel を設定するように変更してください。

于 2012-04-16T03:05:49.907 に答える
1

そのメソッドを実装すると、ラベルが付いたデフォルトのビューが、あなたが返すものに置き換えられるため、必要なテキストを含むラベルを追加するのはあなたの仕事です。

于 2012-04-16T00:57:53.430 に答える