4

ビューの境界がいつ変更されたかを検出し、それを使用してテーブルビューセルごとに表示されるサムネイルの数を更新するカスタム UITableViewController があります。ただし、別のビュー内に tableView を埋め込むと、サイズが変更されたことを視覚的に確認できますが、境界は変更されません。

KVO を使用して、ビューの境界が変更されたことを検出します。カスタム TableViewController の viewDidLoad メソッド内から:

[self.view addObserver:self forKeyPath:@"frame" options:0 context:nil];

tableViewController をアプリのルート ビュー コントローラーにして iPad を回転させると、回転ごとに境界が更新され、すべてが完全に機能します。

ただし、私のテーブルビューが別のView Controllerのペン先に埋め込まれていると、境界が更新されることはなく、フレームも更新されません。それにもかかわらず、テーブルビュー自体が横向きモードに出入りするときに正しくサイズ変更されていることがわかります。そのため、アプリのどこかで実際のフレーム/境界が変更されており、報告されていません。実際に起こっていることにアクセスする方法はありますか?

4

2 に答える 2

11

KVO よりも優れた解決策はviewDidLayoutSubviews、View Controller に実装することです。これは、レイアウトが完了すると、すべての境界変更で呼び出されます。

于 2012-11-18T08:26:31.547 に答える
1

インターフェイス ビルダー ファイルで、tableview が、tableViewController のビューとして参照しているアウトレットを失っていることが判明しました。これを追加すると問題が解決しました!

于 2012-11-19T12:13:02.693 に答える