テーブル ビューが下にスクロールすることに問題があります。解決策を求めてスタック オーバーフローを検索しようとしましたが、何も役に立ちませんでした。
これが私が持っているものです: ユーザーが一番下までスクロールするたびに余分なセルをロードしているテーブルビューがあります。私は次のようにしました:
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == ([self.tableView numberOfRowsInSection:0] - 1))
//load more data..
}
インターネット接続を介してデータが正常に読み込まれた後、[self.tableView reloadData]
テーブルを更新してサイズを大きくするように呼び出しています。
ここで問題が発生します。ユーザーがセルを選択すると、詳細ビュー コントローラーが表示されます。詳細ビューを表示する前に、テーブルがすぐに元のサイズにサイズ変更され、内部のセルの初期数のみが表示されることに気付きました。
詳細ビューが閉じられると、テーブル ビューは元のサイズに戻り (ロードされたデータを調整せずにwillDisplayCell: forRowAtIndexPath:
)、すべてのデータの最後までスクロール ダウンする方法がありません。
これらすべての点を確認しましたが、何も役に立ちません:
[self.tableView reloadData]
テーブル ビューのデータは、 inviewWillAppear
メソッドを呼び出すことによって再読み込みされます。- テーブル ビューの
delegate
とdataSource
がコンテナ ビュー コントローラに正しく設定されています。 - ビューが再び表示されたときに呼び出すことを確認
tableView: numberOfRowsInSection:
し、持っているすべてのデータの正確な数を返していますが、テーブルのサイズが合計データに適合していないことに問題があります。
また、次のようにテーブル フレームのサイズを変更しようとしました。
CGRect frame = self.tableView.frame;
frame.size.height = self.tableView.contentSize.height;
self.tableView.frame = frame;
しかし、何も変わりません。
何か助けてください??
更新: で異常なことは何もしていませんdidSelectRowAtIndexPath
。コードは次のとおりです。
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailsViewController *vc=[[DetailsViewController alloc]initWithNibName:@"DetailsViewController" bundle:nil];
[self presentViewController:vc animated:YES completion:nil];
}