3

ストーリーボードを使用してUITableViewにヘッダーを追加できないようです。いくつかのプロトタイプセルが表示され、正常に機能しているUITableViewがあります。次に、これらのプロトタイプセルの上に新しいUIViewをドラッグし、テーブルのヘッダーとして機能する(セクションヘッダーとしてではなく)ラベルを追加しました。UILabelという単一のプロパティを使用してUIViewの新しいサブクラスを作成しました。ストーリーボードのUIViewのクラスは、このカスタムUIViewに設定され、UILabelの参照アウトレットは、カスタムUIViewクラスのUILabelプロパティに設定されます。

次に、UITableViewControllerのviewDidLoadメソッドで、次のことを実行しています。

DetailTableHeaderView *headerView = [[DetailTableHeaderView alloc] init];
headerView.entryNameLabel.text = @"TEST";
self.tableView.tableHeaderView = headerView;
[self.tableView reloadData];

しかし、アプリを実行すると、テーブルヘッダーがまったく表示されません。また、headerView.entryNameLabelのtextプロパティが「TEST」に設定されていないことにも気づきました。

私はここで何が間違っているのですか?

4

2 に答える 2

-1

この質問は非常に古いですが、これが誰かの助けになることを願ってこの回答を書いています。

テーブル headerView を処理する良い方法は、デリゲート メソッドを使用することです。メソッドを実装tableView:viewForHeaderInSectionおよびtableView:heightForHeaderInSection委任します。tableView:viewForHeaderInSectionメソッドから UIView を返します。

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

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
}

もう 1 つのオプションは、ヘッダー ビューにプロトタイプ セル (カスタム セル) を使用し、それを tableView:viewForHeaderInSection メソッドで返すことです。以下のコードを参照してください(私はこれをテストしていません):

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

    HeaderView *headerView = [self.TableView dequeueReusableHeaderFooterViewWithIdentifier:@"tableHeader"];

    // Set Text
    headerView.headerLabel.text = @"Some title";

    return headerView.contentView;
}

アップデート

上記は tableView:viewForHeaderInSection: メソッドでも機能します。サンプルコードは次のとおりです。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UITableViewCell *sectionHeader;
    CustomSectionHeaderCell *sectionHeaderCell = [tableView dequeueReusableCellWithIdentifier:@"sectionHeaderCell"];

    // do stuff here

    return sectionHeaderCell.contentView;
}
于 2013-12-12T19:36:47.933 に答える