Avatar
そして、たぶんレイアウト結果の見えてるセルだけが仮想Viewに作られるところが、見えてないので何も作られなくなって、その結果、 NavigationLink も存在しなくなって戻るのではないかと思いました。
履歴リストの例で、最新の項目を play した場合(つまり、セルの順番は変わらないけど body は走った場合)は pop されないんですよね。これは、仮想ビューツリーの diff を取った結果、変化がないから生き続けてるってことですかね?で、変化があるとレンダリングも必要だから一度破棄されて、表示されてないからレンダリングが行われないから消えてしまう?
9:09 AM
とりあえず NavigationLink 使わずに navigationController を取り出して push したら回避はできるんですが、今度は List のセルに disclosure indicator を出すのが NavigationLink の有無と連動してたり、セル選択のときの UI の挙動(セルの背景がグレーになるとか)が異なってたりでちょっと微妙です・・・。
9:11 AM
今のところ↑に書いた通知を一時的にせき止める ObservableObject をかまそうかと思ってますが、 iOS 14 だと N 階層でも伝わるので、事故を回避するためには List 以下で変更される可能性のあるもの全部に付けないといけなくてかなり面倒です・・・。
9:13 AM
これ、今 static var shared: History だからトリッキーなことに見えますけど、普通に Core Data で @FetchRequest 使ってる場合とか同じじゃないかと思うんですよねぇ・・・。