小编sna*_*rik的帖子

SwiftUI - 反转布尔绑定

我在 swiftUI 视图中有一个绑定。类似的东西:

struct MyCoolView: View { 
    @ObservedObject var viewModel: ViewModel

    var body: some View { 
        Text("Here is a cool Text!").sheet(isPresented: $viewModel.MyProperty) { 
                            SomeModalView()}
        }
} 
Run Code Online (Sandbox Code Playgroud)

我希望 isPresented 使用存储在属性中的相反布尔值。

斯威夫特不会让我做类似的事情

.sheet(isPresented: !$viewModel.MyProperty) 
Run Code Online (Sandbox Code Playgroud)

(它给了我一个关于无法转换Binding <Bool>为的错误Bool

关于如何处理这个问题的任何想法?

ios swift swiftui

28
推荐指数
3
解决办法
5642
查看次数

Swiftui - 如何使用环境对象作为参数初始化观察对象?

我不确定这是否是我们生活在这个勇敢的新 SwiftUI 世界中的反模式,但基本上我有一个 @EnvironmentObject,其中保存了一些基本的用户信息,我的视图可以调用。

我还有一个@ObservedObject,它拥有此视图所需的一些数据。

当视图出现时,我想使用@EnvironmentObject 来初始化@ObservedObject:

struct MyCoolView: View { 

    @EnvironmentObject userData: UserData
    @ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)  

    var body: some View { 
            Text("\(self.viewObject.myCoolProperty)")
    } 
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在初始化之前,我无法在环境变量上调用 self :

“不能在属性初始值设定项中使用实例成员‘userData’;属性初始值设定项在‘self’可用之前运行。”

我可以看到一些可能的前进路线,但它们都感觉像是黑客。我应该如何处理这个问题?

ios swift swiftui xcode11

15
推荐指数
1
解决办法
7958
查看次数

SwiftUI - ForEach 与 Stride

我试图创建一个 Hstack'd 卡片列表,也就是说,我想创建一系列行的滚动视图。每行将包含两个并排显示的视图的 HStack,并由一些列表数据结构初始化。

struct MyHStackView: View { 

    var myArray = [SomeStruct(1), SomeStruct(3), SomeStruct(4), SomeStruct(5), SomeStruct(6)]

    var body: some View {
        ScrollView(.vertical) { 
            VStack { 
                ForEach(0..<self.myArray.count) { index in 
                    HStack { 
                        SubView(myArray[index])
                        SubView(myArray[index+1]) 
            }
        } 
    }
} 
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我当前的实现涉及数组的每个元素,stride新的 ForEach 中是否内置了一个函数,以便我可以索引数组上的每个其他元素以初始化行?你会如何处理这个问题?

ios13 swiftui xcode11

4
推荐指数
1
解决办法
1254
查看次数

标签 统计

swiftui ×3

ios ×2

swift ×2

xcode11 ×2

ios13 ×1