【发布时间】:2019-09-04 15:30:46
【问题描述】:
我正在努力学习这个聊天应用教程,并且在 SwiftUI 中更新了 ForEach 函数的语法。你能帮我用 SwiftUI 成功编译这个列表吗?
import SwiftUI
struct ChatMessage : Hashable {
var message: String
var avatar: String
}
struct ContentView : View {
var messages = [
ChatMessage(message: "Hello world", avatar: "A"),
ChatMessage(message: "Hi", avatar: "B")
]
var body: some View {
List {
ForEach(messages.identified(by: \.self)) {
Text($0.avatar)
Text($0.message)
}
}
}
}
我尝试将 ForEach 更改为更新后的语法:
var body: some View {
List {
ForEach(messages, id: \.self) {
Text($0.avatar)
Text($0.message)
}
}
}
但是,我收到一条错误消息: “无法推断复杂的闭包返回类型;添加显式类型以消除歧义”
【问题讨论】:
-
在
HStack或VStack中嵌入两个Text视图。基本上,您的ForEach就像创建一个表格单元格。在基本视图中,您不能只放置两个Text子视图而没有某种堆栈 - 您也不能在ForEach中。 -
我知道我很烦人,但正如我在回答中所说,你的问题有一个很大的错误:ForEach 不是一个函数,它是一个实现 View 协议的结构。这对于理解 SwiftUI 的工作原理非常重要。
标签: list foreach swiftui hashable