Представление на основе списка из Data SwiftUI - PullRequest
0 голосов
/ 28 марта 2020

новый код с ошибкой. Это то, с чем я получаю ошибку. У меня есть 2 набора данных, которые будут показаны в 2 группах. местоположение 1 с сотрудниками и местоположение 2 с другим набором сотрудников. Когда я добавляю второй список, если сотрудники, я получаю ошибку Cannot convert value of type 'DataUI' to expected argument type 'Data в строке NavigationLink(destination: DetailView(data: listedPeople)) { файла Loc2.

надеюсь, это объясняет это достаточно хорошо.

Поместить в 1 файл с именем ContentView


struct Home: View {
    var body: some View {
        TabView {
                    loc1()
                    .tabItem {
                        VStack{
                            Image(systemName: "person.3.fill")
                            Text ("Location 1")

                    }
            }
                    .tag(2)
                    loc2()
                        .tabItem {
                            VStack{
                                Image(systemName: "person.fill")
                                Text ("Location 2")
                            }
                        }

        }
    }
}

Поместить в файл 2 Имя loc1


struct Data: Identifiable{
    var id  = Int ()
   let title, imageUrl, Dev, URL: String
}

struct loc1: View {
  let data:[Data] = [

      Data(id: 0, title: "Cook", imageUrl: "hh",Dev:"John", URL: "school"),
          Data(id: 1, title: "Staff", imageUrl: "JJ",Dev:"Harper", URL: "home" ),
          Data(id: 2, title: "Busser", imageUrl: "uu",Dev:"Matt", URL: "Table"),
          Data(id: 3, title: "Host", imageUrl: "tt",Dev:"Jacob", URL: "Door")]


    var body: some View {
      NavigationView {

          List(data) { listedPeople in
            NavigationLink(destination: DetailView(data: listedPeople)) {
                  HStack{
                      Image(listedPeople.imageUrl)
                          .resizable()
                          .cornerRadius(12)
                           .frame(width:30, height:30)
                      VStack (alignment: .leading){
                      Text(listedPeople.title)
                          .font(.headline)
                      Text(listedPeople.Dev)
                          .font(.subheadline)
                                                    }
                            }
                        }.navigationBarTitle(Text("location 1"))
                    }
                    }
        }
    }

Поместить код в новый файл с именем loc2 ( вот где ошибка для меня)

import SwiftUI

struct DataUI: Identifiable{
    var id  = Int ()
    let title, imageUrl, Dev, URL: String
}

struct loc2: View {
let data:[DataUI] = [
          DataUI(id: 0, title: "Cook", imageUrl: "hh",Dev:"Bob", URL: "school"),
          DataUI(id: 1, title: "Staff", imageUrl: "JJ",Dev:"Joe", URL: "home" ),
          DataUI(id: 2, title: "Busser", imageUrl: "uu",Dev:"Nick", URL: "Table"),
          DataUI(id: 3, title: "Host", imageUrl: "tt",Dev:"Hunter", URL: "Door")]


    var body: some View {
          NavigationView {

              List(data) { listedPeople in
                NavigationLink(destination: DetailView(data: listedPeople)) {
                      HStack{
                          Image(listedPeople.imageUrl)
                              .resizable()
                              .cornerRadius(12)
                               .frame(width:30, height:30)
                          VStack (alignment: .leading){
                          Text(listedPeople.title)
                              .font(.headline)
                          Text(listedPeople.Dev)
                              .font(.subheadline)
                                                        }
                                }
                            }.navigationBarTitle(Text("Location2"))
                        }
                        }
            }
        }

Создайте новый файл с именем DetailView

import SwiftUI

struct DetailView : View{

    var data: Data

    var body: some View {
        NavigationView{
            List {
                HStack{
                    Image(data.imageUrl)
                        .resizable()
                        .frame(width:70, height:60)
                        .clipShape(Circle())
                        .shadow(radius: 10)
                        .overlay(Circle().stroke(Color.black, lineWidth: 1))
                    VStack{
                        Text(data.title)
                            .font (.title)
                        HStack{
                            Image(systemName: "envelope.fill")
                                .resizable()
                                .frame(width:20, height: 15)
                            Text("Data.URL")
                                .font (.subheadline)
                        }
                    }
                }.navigationBarTitle(Text("Data.title"))
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

вы смешали Data и DataUI ... в этом была проблема. Я действительно не знаю, почему вы определили две структуры с разными именами, и они полностью идентичны?

Я исправил это, и теперь он работает,

вот решение:

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView {
                    loc1()
                    .tabItem {
                        VStack{
                            Image(systemName: "person.3.fill")
                            Text ("Location 1")

                    }
            }
                    .tag(2)
                    loc2()
                        .tabItem {
                            VStack{
                                Image(systemName: "person.fill")
                                Text ("Location 2")
                            }
                        }

        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct loc1: View {
    let dataUI:[DataUI] = [

        DataUI(id: 0, title: "Cook", imageUrl: "hh",Dev:"John", URL: "school"),
        DataUI(id: 1, title: "Staff", imageUrl: "JJ",Dev:"Harper", URL: "home" ),
        DataUI(id: 2, title: "Busser", imageUrl: "uu",Dev:"Matt", URL: "Table"),
        DataUI(id: 3, title: "Host", imageUrl: "tt",Dev:"Jacob", URL: "Door")]


    var body: some View {
        NavigationView {

            List(dataUI) { listedPeople in
                NavigationLink(destination: DetailView(dataUI: listedPeople)) {
                    HStack{
                        Image(listedPeople.imageUrl)
                            .resizable()
                            .cornerRadius(12)
                            .frame(width:30, height:30)
                        VStack (alignment: .leading){
                            Text(listedPeople.title)
                                .font(.headline)
                            Text(listedPeople.Dev)
                                .font(.subheadline)
                        }
                    }
                }.navigationBarTitle(Text("location 1"))
            }
        }
    }
}

struct loc1_Previews: PreviewProvider {
    static var previews: some View {
        loc1()
    }
}
struct DataUI: Identifiable{
    var id  = Int ()
    let title, imageUrl, Dev, URL: String
}

struct loc2: View {
    let dataUI:[DataUI] = [
        DataUI(id: 0, title: "Cook", imageUrl: "hh",Dev:"Bob", URL: "school"),
        DataUI(id: 1, title: "Staff", imageUrl: "JJ",Dev:"Joe", URL: "home" ),
        DataUI(id: 2, title: "Busser", imageUrl: "uu",Dev:"Nick", URL: "Table"),
        DataUI(id: 3, title: "Host", imageUrl: "tt",Dev:"Hunter", URL: "Door")]


    var body: some View {
        NavigationView {

            List(dataUI) { listedPeople in
                NavigationLink(destination: DetailView(dataUI: listedPeople)) {
                    HStack{
                        Image(listedPeople.imageUrl)
                            .resizable()
                            .cornerRadius(12)
                            .frame(width:30, height:30)
                        VStack (alignment: .leading){
                            Text(listedPeople.title)
                                .font(.headline)
                            Text(listedPeople.Dev)
                                .font(.subheadline)
                        }
                    }
                }.navigationBarTitle(Text("Location2"))
            }
        }
    }
}

struct DetailView : View{

    var dataUI: DataUI

    var body: some View {
        NavigationView{
            List {
                HStack{
                    Image(dataUI.imageUrl)
                        .resizable()
                        .frame(width:70, height:60)
                        .clipShape(Circle())
                        .shadow(radius: 10)
                        .overlay(Circle().stroke(Color.black, lineWidth: 1))
                    VStack{
                        Text(dataUI.title)
                            .font (.title)
                        HStack{
                            Image(systemName: "envelope.fill")
                                .resizable()
                                .frame(width:20, height: 15)
                            Text("Data.URL")
                                .font (.subheadline)
                        }
                    }
                }.navigationBarTitle(Text("Data.title"))
            }
        }
    }
}
0 голосов
/ 28 марта 2020

проверить это!

struct Data: Identifiable{
    var id  = Int ()
    let title, imageUrl, Dev, URL: String

}

struct ContentView: View {
let data:[Data] = [


      Data(id: 0, title: "Cook", imageUrl: "hh",Dev:"John", URL: "school"),
      Data(id: 1, title: "Staff", imageUrl: "JJ",Dev:"Harper", URL: "home" ),
      Data(id: 2, title: "Busser", imageUrl: "uu",Dev:"Matt", URL: "Table"),
      Data(id: 3, title: "Host", imageUrl: "tt",Dev:"Jacob", URL: "Door")]

  var body: some View {
  NavigationView {

      List(data) { listedPeople in
        NavigationLink(destination: DetailView(data: listedPeople)) {
              HStack{
                  Image(listedPeople.imageUrl)
                      .resizable()
                      .cornerRadius(12)
                       .frame(width:30, height:30)
                  VStack (alignment: .leading){
                  Text(listedPeople.title)
                      .font(.headline)
                  Text(listedPeople.Dev)
                      .font(.subheadline)
                                                }
                        }
                    }.navigationBarTitle(Text("Restraunt"))
                }
                }
    }
}

struct DetailView : View{

    var data: Data

    var body: some View {
        NavigationView{
            List {
                HStack{
                    Image(data.imageUrl)
                        .resizable()
                        .frame(width:70, height:60)
                        .clipShape(Circle())
                        .shadow(radius: 10)
                        .overlay(Circle().stroke(Color.black, lineWidth: 1))
                    VStack{
                        Text(data.title)
                            .font (.title)
                        HStack{
                            Image(systemName: "envelope.fill")
                                .resizable()
                                .frame(width:20, height: 15)
                            Text("Data.URL")
                                .font (.subheadline)
                        }
                    }
                }.navigationBarTitle(Text("Data.title"))
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...