小编ade*_*ris的帖子

如何在 SwiftUI 中禁用设备旋转动画?

对于 UIKit 禁用设备旋转动画,您可以重写 viewWillTransitionToSize 方法。 禁用方向改变旋转动画 但是在 SwiftUI 中实现这一点的最佳方法是什么?

animation screen-rotation ios swiftui

11
推荐指数
1
解决办法
1118
查看次数

如何在 SwiftUI 中的两个视图模型之间共享已发布的模型?

我试图在两个不同的视图模型中访问相同的共享模型。两个关联视图都需要访问视图模型内的模型,并且需要编辑模型。所以我不能只使用 EnvironmentObject 来访问模型。

我可以通过视图将模型传递到视图模型,但这不会使两个模型版本保持同步。有什么东西可以像绑定一样工作吗?因为通过绑定,我可以访问模型,但它不会发布此视图中的更改。

简化示例:

NavigationView 中的第一个视图与相邻的视图二:

struct ContentView1: View {
    @StateObject var contentView1Model = ContentView1Model()
    var body: some View {
        NavigationView {
            VStack{
                TextField("ModelName", text: $contentView1Model.model.name)
                NavigationLink(destination: ContentView2(model: contentView1Model.model)){
                    Text("ToContentView2")
                }
            }
        }
    }
}

class ContentView1Model: ObservableObject {
    @Published var model = Model()
    //Some methods that modify the model
}
Run Code Online (Sandbox Code Playgroud)

相邻视图 2 需要访问模型:

struct ContentView2: View {
    @StateObject var contentView2Model: ContentView2Model
    
    init(model: Model) {
        self._contentView2Model = StateObject(wrappedValue: ContentView2Model(model: model))
    }
    
    var body: some View {
        TextField("ModelName", text: $contentView2Model.model.name) …
Run Code Online (Sandbox Code Playgroud)

model viewmodel ios swift swiftui

7
推荐指数
1
解决办法
3148
查看次数

如何:使用条件自定义背景视图作为背景修改器?

通常,如何使用三元运算符对修饰符进行条件更改是很简单的。但是当我尝试在背景修改器的两个自定义视图之间切换时,我收到此错误。如果您直接指定颜色作为替代视图,则情况并非如此。

错误:结果值在 '? :' 表达式的类型 'BackgroundView1' 和 'BackgroundView2' 不匹配

import SwiftUI

struct TestView: View {

@State var buttonPressed = false

var body: some View {

    Button(action: {self.buttonPressed.toggle()}) {

        Image(systemName: "circle.fill")
            .background(self.buttonPressed ? BackgroundView1() : BackgroundView2()) // Error
//                .background(buttonPressed ? Color.red : Color.green)
    }

}
}

struct BackgroundView1: View {

var body: some View {

    Color.red

    }
}

struct BackgroundView2: View {

var body: some View {

    Color.green

}
}

struct TestView_Previews: PreviewProvider {
static var previews: some View …
Run Code Online (Sandbox Code Playgroud)

background view modifier conditional-statements swiftui

5
推荐指数
1
解决办法
2507
查看次数