我在SwiftUI中编写了一个视图,用于创建打字机效果 - 当我传递一个binding变量时,第一次它可以正常工作,例如:TypewriterTextView($textString)
然而,任何后续更改textString值的操作都不起作用(因为binding值并没有直接放置在body中)。 我想知道有没有任何想法可以手动通知视图内部@Binding var值已经发生更改。
struct TypewriterTextView: View {
@Binding var textString:String
@State private var typingInterval = 0.3
@State private var typedString = ""
var body: some View {
Text(typedString).onAppear() {
Timer.scheduledTimer(withTimeInterval: self.typingInterval, repeats: true, block: { timer in
if self.typedString.length < self.textString.length {
self.typedString = self.typedString + self.textString[self.typedString.length]
}
else { timer.invalidate() }
})
}
}
}
textString
应该是 let,因为这个 View 并不对它进行写入操作。 - malhal.onChange
(即使值相同),因为model
每次都被重新创建。 - mylogon