2016-06-01 6 views
0

インタフェースビルダーでUIViewControllerが設定されています。 UITableViewとヘッダーとしてUIView、フッターとして別のUIViewが含まれています。UITableViewのtableFooterViewが非常に奇妙な方法で表示されています

(、ヘッダーとフッターは、セクションヘッダとフッタされていないとして行動しているこれら2つのUIViewsに注意してください。)

ヘッダだけの偉大な働いています。インターフェイスビルダでは、UITableViewはスーパービュー(top:0、bottom:0、leading:0、trailing:0)に揃えられます。それから、headerView(UIView)をUITableViewの一番上に揃え、幅と幅を同じにしてUITableViewに合わせて配置します。 headerViewの高さは、そのサブビューに従って設定されます。 .mファイルで

、私はすべてが完璧に動作

self.myTableView.tableHeaderView = self.headerView; 

を設定します。確かに、headerViewはUITableViewの一番上に固定されており、下にスクロールするとheaderViewがスクロールして画面から消えます。優れた。

私はフッターで同じことをやると思いました。実際、私は全く同じことをしましたが、私はfooterViewの一番下をUITableViewに揃えました(もちろん、2つのシェアは同じ幅と水平のセンタリングです)。私はfooterViewの高さを固定値に設定しました。正確

self.myTableView.tableFooterView = self.footerView; 

そして、それは奇妙な取得する場所これは...私は一番下までスクロールすると、UIViewのfooterViewためのスペースがある、:.mファイルで

、私はこのコード行を追加しますインターフェイスビルダーで指定したfooterViewの高さに応じて設定します。

そして、スクロールアップして、スクロールの上に指を置いて、UITableViewの上を移動すると、footerViewのサブビューが上にあります! WTF!

誰もがこれを理解していますか?

すべてはInterface Builderで設定され、tableHeaderViewプロパティとtableFooterViewプロパティはviewDidLoad:メソッドで割り当てられます。

+0

viewDidLayoutSubviewsのヘッダーとフッターのプロパティを割り当てようとしましたか? –

+0

footerViewとheaderプロパティをviewDidLayoutSubviewsに設定すると、画面の下部にスクロールダウンすることなく(UITableViewの中央)、footerViewが表示されます。下にスクロールすると、テーブルビューのセルが上に移動します。希望する動作ではありません。 – ArthurVonBabylon

答えて

0

これはこれまでの醜い、ハックな解決策です。

footerViewとUITableViewの境界が揃っていて、その制約を.mファイルにプロパティ(bottomToBottomConstraint)として接続します。次に、myTableView.contentSize.heightをbottomToBottomConstraint.constantに設定し、ビューを表示したい場所に表示します。

self.bottomToBottomConstraint.constant = self.myTableView.contentSize.height; 

これは単なるコード行ですが、私は問題を理解し、真の解決策を実装することをお勧めします...あなたの知識を待っています!

関連する問題