1

viewWillLayoutSubviews-を使用して表示されたコントローラーを閉じた後、 (およびviewDidLayoutSubviews)メソッドが呼び出されない問題を追跡しようとしています。

[self presentModalViewController:controller animated:YES];

と却下

[self dismissModalViewControllerAnimated:YES];. 

このビューコントローラはUISplitViewController、詳細領域でボタンが押された結果として、の上部に表示されます。モーダルを上げずにデバイスを回転させると、viewWillLayoutSubviewsコールバックが発生します。ただし、問題は、モデルの表示中に回転すると、ビューが正しく更新されず、閉じた後にビューの境界が再計算されないことです。IOS 5リリースノートによるとviewDidLayoutSubviews、モーダルビューコントローラを閉じた後に取得する必要があります。

比較のために、他のコードを含まないベアボーンアプリを作成しました。これは文書化されているとおりに機能viewWillLayoutSubviewsし、モーダルが閉じられた後に呼び出されます。

私は実際のアプリコードを何度も繰り返してきましたが、何も問題は見つかりませんでした。私はこれを理解するのに役立つことの提案を探しています。回転しているときはコールバックが機能するのに、モーダルが閉じているときは機能しないのはなぜですか?それは私のビュー階層にあるものでしょうか?

助けてくれてありがとう!

4

1 に答える 1

1

viewWillAppearの代わりにデリゲートメソッドを使用してみてくださいviewWillLayoutSubviews。WillLayoutSubviewsは、ビューの境界が変更された場合にのみ呼び出されます(これはデバイスを回転させたときに発生します)。

于 2012-06-07T06:29:19.383 に答える