xcode9でTableViewCellを用いた一覧を作っています。
tableViewでセルを選択してSubTableViewControllerを開き、戻るボタンでまたtableViewに戻った時に、スクロールがセルを選択する前の位置になるようにしたいです。(今はtableViewに戻る度に、スクロールが一番上まで戻ります。)
// Cell が選択された場合 func tableView(_ table: UITableView,didSelectRowAt indexPath: IndexPath) { //スクロールを保存 wlastOffsetY = CGFloat(UserDefaults.standard.integer(forKey: "wacg")) wlastOffsetY = tableView.contentOffset.y UserDefaults.standard.set(wlastOffsetY, forKey: "wacg") } //スクロールを読み込む wlastOffsetY = CGFloat(UserDefaults.standard.integer(forKey: "wacg")) tableView.setContentOffset(CGPoint(x: 0, y:wlastOffsetY), animated: true)
これでスクロール量は保存できたのですが、読み込むコードをどこに書き込めばうまく実装されるのか、色々試したのですがわかりません。
試したこと
1. SubTableViewの戻るボタンを押した時に読み込む @IBAction func bb (_ sender: Any){ wlastOffsetY = CGFloat(UserDefaults.standard.integer(forKey: "wacg")) tableView.setContentOffset(CGPoint(x: 0, y:wlastOffsetY), animated: true) } 2. override func viewDidLoadに入れる override func viewDidLoad() { wlastOffsetY = CGFloat(UserDefaults.standard.integer(forKey: "wacg")) tableView.setContentOffset(CGPoint(x: 0, y:wlastOffsetY), animated: true) } 3. func scrollで指定する func scroll(to direction: UITableView, animated: Bool){ wlastOffsetY = CGFloat(UserDefaults.standard.integer(forKey: "wacg")) tableView.setContentOffset(CGPoint(x: 0, y:wlastOffsetY), animated: true) }
1、2ではsetContentOffsetの行に
Fatal error: Unexpectedly found nil while unwrapping an Optional valueが出てRunできません。
3ではAppDelegate.swiftにsignal SIGABRTと出てRunが止まってしまいます。
ご教授のほど宜しくお願い致します。