小编Sup*_*oob的帖子

SwiftUI 2.0 中的 navigationBarTitle 和 navigationTitle 修饰符有什么区别?

学习了所有新的 SwiftUI 2.0 更改,但发现.navigationTitle它的工作方式几乎与.navigationBarTitle. 我查看了 WWDC 2020 视频,发现了一个视频,其中提到它用于区分 MacOS 中的选项卡标题?但不确定我现在是否应该使用它而不是.navigationBarTitle在 iOS 中使用它?此外,Apple 文档也不清楚两者之间的区别。

所以我的问题是,确切的区别是什么,你将如何在 iOS/MacOS 中使用它们?

swiftui swiftui-navigationview

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

如何将删除线()应用于 SwiftUI 中点击的 foreach 文本项?

我正在尝试对 ForEach 循环中任何点击的文本项应用删除线:

struct BrandListView: View {
    @ObservedObject var list: ListObject
                                
    var body: some View {
        ScrollView {
            VStack {
                ForEach(list.items) { items in
                        Text(item.name)
                            .strikethrough(//?)
                            .onTapGesture(perform: {
                                // on tap, apply strikethrough only to this item.
                            })
                }
            }
        }
    }
    
}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用 @State var 应用条件,以跟踪何时应用删除线()或不应用?我认为唯一的方法是将一个属性放入 listObject 中,以跟踪它是否被删除,然后使用该属性将 true/false 应用于 Strikethrough() 修饰符。但这看起来像意大利面条代码吗?

strikethrough swiftui swiftui-foreach

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

“\.self”在 Swift/SwiftUI 中实际上做了什么?

我不完全理解\.self以下代码的具体作用:

struct ContentView: View {
    @State private var numbers = [Int]()
    @State private var currentNumber = 1

    var body: some View {
        VStack {
            List {
                ForEach(numbers, id: \.self) {
                    Text("\($0)")
                }
            }

            Button("Add Number") {
                self.numbers.append(self.currentNumber)
                self.currentNumber += 1
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在关注:https://www.hackingwithswift.com/books/ios-swiftui/deleting-items-using-ondelete

我现在对这门语言有一个非常基本的了解,所以我可能无法理解高级解释,所以更喜欢非常简单的解释或带有详细描述的类比。id我认为它将每个项目设置list为数字数组中的每个项目?如果错误请纠正我 - 但是每个都id被设置为Int数字数组的每个条目中的内容吗?如果是这样,那么\打字时实际会做什么\.self以及.self与 结合实际会做什么\

swiftui swiftui-foreach

6
推荐指数
1
解决办法
5958
查看次数

onDelete() 函数处理程序如何在 swiftUI 列表中工作?

所以我知道以下代码有效:

struct ContentView: View {
    func removeRows(at offsets: IndexSet) {
        numbers.remove(atOffsets: offsets)
    }
    
    @State private var numbers = [Int]()
    @State private var currentNumber = 1

    var body: some View {
        VStack {
            List {
                ForEach(numbers, id: \.self) {
                    Text("\($0)")
                }
                .onDelete(perform: removeRows)
            }

            Button("Add Number") {
                self.numbers.append(self.currentNumber)
                self.currentNumber += 1
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是removeRows(at offsets: IndexSet)自定义函数处理程序是如何.onDelete()工作的。at具体来说,为什么前面有一个参数标签offsets:。您可以使用on代替at例如吗?参数标签只是为了让我们更好地理解代码吗?

然后,IndexSet我认为我将其理解为一种类型,它保存用于索引目的的 Int 或用于删除列表中的行的 Int 范围,以便 swiftui 知道要删除哪一行?

我想我理解numbers.remove(atOffsets: …

swift swiftui

6
推荐指数
1
解决办法
3808
查看次数

您如何从 SwiftUI 2.0 中的多个其他视图访问和编辑 @AppStorage 变量?

有一个更好的方法吗?有没有办法访问环境中的UserDefaults??我做了以下事情:

struct ContentView: View {
    @AppStorage("darkMode") var darkMode = false

    var body: some View {
            SubView(darkMode: $darkMode)
        }
    }
}

struct SubView: View {
    @Binding var darkMode: Bool
    var body: some View {
        Text("Dark Mode is \(darkMode == true ? "on" : "off")")
    }
}
Run Code Online (Sandbox Code Playgroud)

swiftui

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