私は自分のテーブルビューに問題があります。その上に表示されるモーダルビューコントローラを閉じると、常に上にスクロールします。私はKVOを使ってcontentOffset
への変更を観察しようとしましたが、私の見解を混乱させるものはその背後にあります。ユーザーがself.tableView.contentOffset
があり、モーダルダイアログで、彼のタスクを完了したときUITableViewController
からdismissModalViewControllerAnimatedはcontentOffsetをリセットします
は、私が呼ん:
[self dismissModalViewControllerAnimated:YES]
viewWillAppear:(BOOL)animated
が呼び出された後、self.tableView.contentOffset
はすでに0,0に設定されています。
これは起こっているはずですか?モーダルビューを表示する前にスクロール位置を覚えておき、モーダルビューを解除した後にviewWillAppearに戻すことで問題を回避できます。しかし、それは間違っているようです。何か不足していますか?
Dismiss modal view changes underlying UIScrollViewで説明した同様の問題が見つかりました。
モーダルビューを閉じた後に 'viewDidLoad:'が呼び出されるかどうかチェックできますか? (私はこれがメモリの警告中に発生する可能性があることに気づきました。一部のコンポーネントは、ビューが押されてもアンロードされます)。 –
babbidiには良い点があります。メモリ警告が発生した場合は、モーダルビューが上に表示されている間にビューをアンロードすることができます。 viewDidLoadメソッドでテーブルビューを初期化し、モーダルビューでメモリ警告が発生した場合は、モーダルビューを閉じたときにテーブルビューが再初期化されている可能性があります。 NSLogをviewDidUnloadとviewDidLoadに入れてください。 – MattyG
私はすでに 'viewDidUnload'を監視していました - いいえ、ビューはアンロードされません。 – Palimondo