Ниже мой рабочий код:
struct ReaderView: View {
@State var presentingSettingsSheet = false
@State var currentDate = Date()
private let timer = Timer.publish(every: 1.0, on: .main, in: .common)
.autoconnect()
.eraseToAnyPublisher()
var body: some View {
let filter = "Showing all stories"
return NavigationView {
List {
Section(header: Text(filter).padding(.leading, -10)) {
VStack(alignment: .leading, spacing: 10) {
TimeBadge(time: 20.0)
Text("Title")
.frame(minHeight: 0, maxHeight: 100)
.font(.title)
PostedBy(time: 30.0, user: "Author", currentDate: self.currentDate)
}
.padding()
}
}
.sheet(isPresented: self.$presentingSettingsSheet, content: {
SettingsView()
})
.navigationBarTitle(Text("Stories"))
.navigationBarItems(trailing:
Button("Settings") {
self.presentingSettingsSheet = true
}
)
}
.onReceive(timer) {
print($0)
self.currentDate = $0
}
}}
Но если я добавлю onReceive после List
Scope, он не работает, он начнет работать, если я добавлю его после объявления navigationBarItems
. Итак, мой вопрос в том, почему onReceive ведет себя по-другому, если поместить его в код по-другому. Я знаю, что последовательность модификаторов изменяет конечный результат UI, но это то же самое для onReceive
. Я ищу возможное объяснение этому.
Я использую: Симулятор Xcode 11.5 iPhone SE (2-е поколение), 13.5.