关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
2年前关闭。
Improve this question
在基于 SwiftUI 的应用程序中放置音频播放代码的最佳位置在哪里,即没有 UIViewController 类?我要播放的声音是由一个 View 发起的,所以我想把它放到对应的 View 模型类中。但由于模型类是关于数据的,我认为应该有更好的选择。最好的架构是什么?
最佳答案
正确, View 不应该处理数据。 SwiftUI 强制执行此逻辑。
您可以创建一个播放器类来处理播放音频。并将其添加为 EnvironmentObject
,因此您可以使用 View
中的按钮来控制它.然后,您可以做一些甜蜜的事情,例如绑定(bind)您的播放按钮以根据播放器是否正在播放不同的图像:)
更新
Xcode 11 beta 4 的代码已更新(willChange
而不是 didChange
)
struct PlayerView : View {
@EnvironmentObject private var player: Player
var body: some View {
Button(action: {
self.player.pauseOrPlay()
}) {
Image(systemName: player.isPlaying ? "pause.circle.fill" : "play.circle.fill").font(.title).frame(minWidth: 44, minHeight: 44)
}
}
}
class Player: BindableObject {
let willChange = PassthroughSubject<Player, Never>()
var isPlaying: Bool = false {
willSet {
willChange.send(self)
}
}
func pauseOrPlay() {
// Code that toggles the audio on and off
}
}
关于swift - 在 SwiftUI 应用程序中放置音频播放代码的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068891/