Ссылка на инициализатор 'init (destination: label :)' на 'NavigationLink' - PullRequest
2 голосов
/ 22 апреля 2020

Я пытаюсь сделать 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)
        }
    }
}

Ошибка: ссылка на инициализатор 'init (destination: label :)' на 'NavigationLink' требует, чтобы 'BooksRow' соответствовал 'View'

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Вот это исправление

struct BooksRow: View { // << here !!

    let book : BookModel
    var body: some View {

    // ... your other code
1 голос
/ 22 апреля 2020
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)
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...