3

フォーラムには質問に対する多くの回答があることは知っていますが、それらは役に立ちませんでした。これが私の問題です。

私は持っ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:

すべてcontentSizeheight値は問題ないようです。しかし、問題は画面上のカスタム ヘッダー ビューに何らかの関係があることに気付きました。テーブルビューから削除すると、最後までスクロールします。ただし、ヘッダー ビューではそうではありません。ヘッダー ビューからは何も変更しません。テーブルの上部にボタンが表示されているだけです。

4

2 に答える 2

4

これは、tableView のフレームの高さが表示領域を超えているためです。tableView のフレームの高さを減らして、表示領域内に収めます。あなたはすべてを見るでしょう。

tableView.contentSize = CGSizeMake(widthYouWant, heightYouWant);
于 2014-07-10T12:38:48.980 に答える
1

数時間の実験の後、 のcontentSize.heightプロパティをtableView1 つ増やしたところ、すべて正常に動作するようになりました。なぜそれが機能するのかわかりませんが、解決策です。ちなみに、プロパティを1つ減らしても同じ結果になります。どちらの場合も、テーブルは正しく表示されます。

于 2013-05-13T10:29:20.383 に答える