スクロールウィンドウの一番上にあるUITableViewCell
を見つける方法はありますか?
アプリが終了したときに保存できるように、現在のスクロール位置を取得したいです。アプリが起動したら、最後に終了したときの位置にスクロールしたいです。
contentOffset
プロパティを調べることで、Table Viewの正確なオフセットを簡単に取得できます。垂直スクロールについては、次をご覧ください。
tableView.contentOffset.y;
受け入れられるソリューションは、すべてのテーブルビューアイテムのサイズがわかっている場合にのみ機能します。自動サイズ設定/推定サイズを使用すると、常に正しいとは限りません。
1つの代替方法は、最初に表示されるアイテムを保存してスクロールすることです。
以下を使用して、最初の表示項目indexPathを取得できます。
savedIndex = tableView.indexPathsForVisibleRows?.first
次に、以下を実行してスクロールします。
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
ViewDidLoadではなくviewWillAppearでロードできることを確認します(iOS 9でテスト済み)。 ViewWillAppearは、ビューがレイアウトを終了したときです-結果に違いがあります。
-(void) viewWillAppear:(BOOL)animated {
NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults];
[self.tableView setContentOffset:CGPointMake(0, [lightData floatForKey:@"yValue"])];
}
-(void) viewWillDisappear:(BOOL)animated {
NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults];
[lightData setFloat:self.tableView.contentOffset.y forKey:@"yValue"];
[lightData synchronize];
}