フォーラムには質問に対する多くの回答があることは知っていますが、それらは役に立ちませんでした。これが私の問題です。
私は持っUITableView
ていUISegmentedControl
ます。一方のセグメントでは、他方のセグメントよりもデータが少なくなっています。reloadData
回転またはセグメントの切り替え後、データ全体が表示されるように呼び出します。それはうまくいきます。
ここで、ユーザーがセルをクリックすると、同じ を使用して別のビューに移動しますUISegmentedControl
。同じコントロールが使用されることを意図しており、両方のビューがデータに対して同じパースペクティブを示すようにしたいと考えています。この問題は、ユーザーが最初の画面でデータの少ないパースペクティブを表示し、2 番目の画面に移動してパースペクティブをそこのデータに変更すると発生します。その後、彼は戻ってきて、テーブルの一番下までスクロールできません。彼が画面を回転させたり、セグメントを変更したりすると、すべてが再びうまくいきます。
の高さを実装viewWillAppear:
して削減/計算することで、問題を解決しようとしましたtableView
。残念ながら、うまくいきませんでした。呼び出しreloadData
も役に立ちません。実際、tableView
セグメントを切り替えると、すでにリロードされています...しかし、それでも、テーブルの最後のセルを見ることができません。
何か案は?
編集:
テストから取得した高さは次のとおりです(サイズ変更なし):
NSLog(@"Before switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height);
--> 切り替え前: 372.000000, 471.000000
NSLog(@"After switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height);
--> 切り替え後: 372.000000, 585.000000
はtableView
そのままで、contentSize
増加するだけです。一方の値を他方の値に設定したり、値を減らしたりしようとしましたが、どうすればよいかわかりません...
EDIT2:
すべてcontentSize
とheight
値は問題ないようです。しかし、問題は画面上のカスタム ヘッダー ビューに何らかの関係があることに気付きました。テーブルビューから削除すると、最後までスクロールします。ただし、ヘッダー ビューではそうではありません。ヘッダー ビューからは何も変更しません。テーブルの上部にボタンが表示されているだけです。