🐥
iOS17.5+TabView+NavigationLink+SectionHeader+SwiftDataの組み合わせでバグ?
現象
AからBへ移行してもBを表示しない。
Bのbodyがずっと走り続ける(何度も走る)。
コード
import SwiftUI
import SwiftData
@Model
class Word {
@Attribute(.unique)
var id = UUID().uuidString
init() {}
}
struct ContentView: View {
var body: some View {
TabView {
A()
}
}
}
struct A: View {
var body: some View {
NavigationStack {
NavigationLink(destination: B()) {
Text(verbatim: "B")
}
}
}
}
struct B: View {
@Query(filter: #Predicate<Word> { $0.id == "abc" }) var wordsABC: [Word]
var body: some View {
List {
Section {
Text("Content")
} header: {
Text("Header")
}
}
}
}
起きる条件
- iOS17.5
- TabView
- NavigationStack + NavigationLink
- SwiftData + Query + filter
- List + Section + header
の組み合わせ
回避方法
回避が確認できたものは
- iOS18にする
- TabViewではなく直接Aを貼る
- filterを使わない
- headerを使わない
- AでQueryを作ってBに渡す
どれかひとつで回避できた
Discussion