私のアプリにはTableViewControllerがあります(いくつかありますが、これはこの特定の1つでのみ発生します)。
コンテンツはNSFetchedResultsControllerを使用してコアデータから駆動され、TVCはNSFetchedResultsControllerDelegateであり、コンテンツの変更に基づいてテーブルを更新するためのメソッドを使用します(つまり、beginUpdates、endUpdatesなどを実行します)。
私はこれを何度も行ったことがあるので、同じコードを使用します。(Ray Wenderlichのサイトにもあります)。
とにかく、CoreData DBに新しいアイテムを追加するビュー(TVCからプッシュされたもの)があります。次に、この新しいアイテムをTVCのテーブルに追加する必要があります。
これはすべて正常に機能しています。テーブルを上下にスクロールして見ます。[追加]をクリックします。新しいアイテムを追加します。TableViewに戻ると、新しいアイテムが表示されます...
しかし
tableViewでは、現在、一番下までスクロールできません。一番下までスクロールして画面を押し続けると、テーブル内の新しいデータを確認できますが、離すとtableViewが跳ね返り、表示されなくなります。
私はいくつかのことをチェックしました...
- TableViewのフレームは、前後で変更されません。
- tableViewのcontentSizeは、追加されたセルに対応するように変更されます。
- スクロールするとき、最小contentOffsetは前後の両方で0です(これは正しいです)。
- MAXIMUM contentOffsetをスクロールすると、前後で同じになります(これは正しくありません)。
rootVCに戻ってから、TVCにプッシュバックすると、もう一度最後までスクロールして、すべての新しいセルを表示できます。
私はいくつかのテストを行いました。
を使用して自動回転を再度有効にし- (BOOL)shouldAutorotate
てから、新しいセルを追加するなどの動作を実行しても、一番下までスクロールできません。しかし、横向きに回転してから縦向きに戻すと、一番下までスクロールできるようになります。
この[self viewWillLayoutSubViews];
後、メソッドを実行してみました[self.tableView endUpdates];
が、それでも何も起こりませんでした。
私が言ったように、私はこれまで何度も問題なくこれを行ってきました。私は今何が起こっているのか本当に理解していません。