戻っていたわけじゃなかったのだ。viewが再レンダリングされていて、それで一番上にいってただけだったんだ。 気づくのに時間がかかったので、メモしておくのだ
スクロールが戻ってるのではなく、viewが再生成されているだけであった
つまり、Navigationで戻った際、viewが再生成されているから、一番上にいるだけであって、別にスクロール位置の情報が破棄されているわけではなかったのだ。。。
じゃ、なんでワイのviewは破棄されていたのか?って話で。。
onAppearでデータの取得をしていて、それが戻るで呼ばれていた
こんな感じのコードを使っていて。。
.onAppear{
CommentListdata.initialize(contentID: self.ContentID, parentCommentID: 0)
}
CommentListdata.progress == trueの時にprogressviewが表示され、
上記の初期化が終わるとCommentListdata.progress = falseが格納され、
データに問題なければCommentListdata.progress.isValidにtrueが入り、
CommentListdata.progress = false かつ CommentListdata.progress.isValid==trueの時に
取得されたデータのviewが表示される。
でもこれでは、Navigationで戻るたびに、再度データ取得が走っていたのだ。。
isValid == trueなら、戻ってもデータ取得しなけりゃいいわけで。。
なので、当然以下で対処
.onAppear{
if CommentListdata.isValid == false{
CommentListdata.initialize(contentID: self.ContentID, parentCommentID: 0)
}
}
これで再取得が走らないので、再レンダリングが起きず、スクロールが上に戻ることはなくなったのだ
よかったね