1

これは私がやりたいことの完全なコードです(2行のみ)

[self.headerViewofWholeTable addSubview:self.delegate.tableView.tableHeaderView];
self.delegate.tableView.tableHeaderView= self.headerViewofWholeTable;

うまくいかないので、印刷情報を追加し始めました

[self.headerViewofWholeTable addSubview:self.delegate.tableView.tableHeaderView];
PO(self.headerViewofWholeTable.subviews);
self.delegate.tableView.tableHeaderView= self.headerViewofWholeTable;
PO(self.headerViewofWholeTable.subviews);

単純な4行のコード:D

結果:

 self.headerViewofWholeTable.subviews: (
        "<UILabel: 0x8bf9770; frame = (50 15; 250 21); text = 'Pull Down to Refresh'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8bf97e0>>",
        "<UILabel: 0x8b63aa0; frame = (50 35; 257 20); text = 'last updated'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8b63b10>>",
        "<UIView: 0x8b63b80; frame = (20 11; 22 54); autoresize = RM+BM; layer = <CALayer: 0x8bf6c40>>",
        "<UIImageView: 0x8be9ca0; frame = (0 0; 320 10); autoresize = LM+RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8be9ce0>> - shading-top-Table.png"
    )
 self.headerViewofWholeTable.subviews: (
        "<UILabel: 0x8bf9770; frame = (50 15; 250 21); text = 'Pull Down to Refresh'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8bf97e0>>",
        "<UILabel: 0x8b63aa0; frame = (50 35; 257 20); text = 'last updated'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8b63b10>>",
        "<UIView: 0x8b63b80; frame = (20 11; 22 54); autoresize = RM+BM; layer = <CALayer: 0x8bf6c40>>"
    )

ご覧のように、

それ self.delegate.tableView.tableHeaderView= self.headerViewofWholeTable; self.delegate.tableView.tableHeaderViewが指すビューを削除します。しかし、ビュー

"<UIImageView: 0x8be9ca0; frame = (0 0; 320 10); autoresize = LM+RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x8be9ce0>> - shading-top-Table.png"

self.headerViewofWholeTableによって保持されるため、消えてはいけません

それで、誰かが何が起こったのか説明できますか?

問題は簡単に回避できますが、実際に何が起こっているのかをもっと知りたいです。

4

1 に答える 1

1

ほとんどのUITableView setTableHeaderView場合、(2 行目で呼び出す) メソッドの実装では、現在のヘッダー ビューがまだテーブルのサブビューであると想定しています。そのため、新しいヘッダー ビューを割り当てようとすると、テーブル ビューは最初に現在のヘッダーをスーパービューから削除します (既に別のビューに移動されていることを知りません)。テーブル ビューは、ヘッダー ビューが新しいビューに移動されたことを想定していません。そのため、ビューからヘッダー ビューが削除されますheaderViewofWholeTable

于 2012-10-24T05:00:45.180 に答える