[英]Referencing initializer 'init(destination:label:)' on 'NavigationLink'
I'm trying to make a List
but getting error as below code.我正在尝试创建一个
List
,但收到如下代码的错误。
struct BookView: View {
var books : [BookModel] = []
var body: some View {
NavigationView {
List(self.books, id: \.self) { book in
NavigationLink(destination: Text(book.title ?? "Unknown Title")) {
BooksRow(book: book)
}
}
}
}
}
struct BookModel: Hashable {
var title: String?
var author: String?
}
struct BooksRow {
let book : BookModel
var body: some View {
VStack {
Text(book.title ?? "Unknown Title")
.font(.headline)
Text(book.author ?? "Unknown Author")
.foregroundColor(.secondary)
}
}
}
Error: Referencing initializer 'init(destination:label:)' on 'NavigationLink' requires that 'BooksRow' conform to 'View'
错误:在“NavigationLink”上引用初始化程序“init(destination:label:)”要求“BooksRow”符合“View”
Here is fix这是修复
struct BooksRow: View { // << here !!
let book : BookModel
var body: some View {
// ... your other code
struct BooksRow: View { // Now it conforms to View-Protocol
let book : BookModel
var body: some View {
VStack {
Text(book.title ?? "Unknown Title")
.font(.headline)
Text(book.author ?? "Unknown Author")
.foregroundColor(.secondary)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.