2011-03-30 20 views
13

私のUITableViewには、コンテンツに応じてサイズを変更する必要があるtableHeaderViewがあります。しかし、サイズ変更はうまく動作しますが、tableHeaderViewは最初の2つのセルを覆い隠します。 tableHeaderViewのフレームを誤って変更しても、ビューの残りの部分は再編成されません。tableHeaderViewの高さを変更するとセルが非表示になる

私はすでに[self.tableView layoutSubViews][self.tableView setNeedsLayout]を呼び出そうとしましたが、それらは役に立たないと思います。また、Interface BuilderからtableHeaderViewにフレームを変更するコンセントを与えようとしましたが、tableViewを再構成しません。

どのように私はtableHeaderViewのサイズを変更することができます、セルを隠すことなく、tableViewの残りの部分を再構成する?

+1

あなたの 'viewForheaderInSection'で' [myView setClipsToBounds:YES]; 'を入力してください。あなたが見るサイズの大きさを確認できます。 – Seega

答えて

4

あなたはUITableViewをどのように作成したのかわかりませんが、私はあなたのようにtableHeaderViewで作成しようとしました。

私はのUITableViewController

@interface MyTableViewController : UITableViewController { 

} 

@end 

と実装の継承クラスを作成したが、のviewDidLoadで、私が追加:

UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
[header setBackgroundColor:[UIColor redColor]]; 
self.tableView.tableHeaderView = header; 

enter image description here

+0

nib-fileでTableViewControllerを通してTableViewを作成しました。そこで、tableHeaderViewのビューを追加し、内容を含むラベルを挿入しました。 IBOutletを調整して、コンテンツとラベルフレームを変更します。しかし、tableHeaderView IBOutletで同じことを実行しても、tableviewは再編成されません。 – SpacyRicochet

+2

最後に、Interface Builderでビューを作成せずにこのメソッドを使用しました。ありがとう! – SpacyRicochet

+0

ねえ!なぜ私はviewDidLoadに同じ行を追加して、上の赤いブロックを見ることができないのですか? –

22

はのUITableViewのtableHeaderViewプロパティを設定してみてくださいあなたのコンテンツのサイズを変更した後。

[self.tableView setTableHeaderView:self.myResizedTableHeaderView]; 

問題が解決しました。それが役に立てば幸い。

+3

具体的には、viewWillAppearまでサイジングの作業を延期しました。私のコントローラは動的にインスタンス化されていて、それまで参照するための適切なジオメトリがなかったためです。 – qix

関連する問題