无法将类型 'String' 的值转换为预期的参数类型 'Category'
Cannot convert value of type 'String' to expected argument type 'Category'
这是我的第一个 iOS 应用程序开发项目。我还在学习,一切对我来说都是新的。我在这里尝试创建三个导航矩形,用于从数组导航到视图。但是有各种各样的错误。这是代码
// ContentView.swiftui
struct ContentView: View {
struct Category : Identifiable{
let id = UUID()
let title: String
}
var categories = [
Category( title: "Menu 1"),
Category( title: "Menu 2"),
Category( title: "Menu 3"),
]
var body: some View {
NavigationView {
ScrollView(.horizontal) {
HStack {
ForEach(categories, id:\.title){category in
NavigationLink(destination: CategoryView(categories: category.title))
// Here comes the error (Cannot convert value of type 'String' to expected argument type 'Category')
{
ZStack{
RoundedRectangle(cornerRadius: 20)
.frame(width: 250, height: 120)
.foregroundColor(.accentColor)
.shadow(color: .black.opacity(0.2), radius: 10, x: 10, y: 10)
.shadow(color: .white.opacity(0.7), radius: 10, x: -10, y: -10)
Text(category.title)
}.padding(5)
}
}
}
.padding(10)
}
}
.navigationBarTitleDisplayMode(.inline)
}
}
下一个View文件如下,也是一个简单的View。
// CategoryView.swift
struct CategoryView: View {
var categories : Category
var body: some View {
NavigationView {
List{
ForEach(questions){question in
Text("Question \(question.id)")
}
}
.navigationBarTitle("Welcome") // Also this title is not visible, I've tried changing color.
.navigationTitle(categories.title)
}
}
}
struct CategoryView_Previews: PreviewProvider {
static var previews: some View {
CategoryView(categories: categories[1])
}
}
提前致谢
您正在将字符串传递给 CategoryView(categories: category.title)
的初始化程序。去掉最后的.title
,传入分类CategoryView(categories: category)
.
至于导航标题,修饰符需要在 NavigationView
内部而不是附加到 NavigationView
本身。这是因为您可以将多个视图推送到具有不同导航栏标题的一个 NavigationView。
NavigationView {
List {
ForEach(questions) { question in
Text("Question \(question.id)")
}
} // end List
.navigationBarTitle("Welcome")
} // end NavView
这是我的第一个 iOS 应用程序开发项目。我还在学习,一切对我来说都是新的。我在这里尝试创建三个导航矩形,用于从数组导航到视图。但是有各种各样的错误。这是代码
// ContentView.swiftui
struct ContentView: View {
struct Category : Identifiable{
let id = UUID()
let title: String
}
var categories = [
Category( title: "Menu 1"),
Category( title: "Menu 2"),
Category( title: "Menu 3"),
]
var body: some View {
NavigationView {
ScrollView(.horizontal) {
HStack {
ForEach(categories, id:\.title){category in
NavigationLink(destination: CategoryView(categories: category.title))
// Here comes the error (Cannot convert value of type 'String' to expected argument type 'Category')
{
ZStack{
RoundedRectangle(cornerRadius: 20)
.frame(width: 250, height: 120)
.foregroundColor(.accentColor)
.shadow(color: .black.opacity(0.2), radius: 10, x: 10, y: 10)
.shadow(color: .white.opacity(0.7), radius: 10, x: -10, y: -10)
Text(category.title)
}.padding(5)
}
}
}
.padding(10)
}
}
.navigationBarTitleDisplayMode(.inline)
}
}
下一个View文件如下,也是一个简单的View。
// CategoryView.swift
struct CategoryView: View {
var categories : Category
var body: some View {
NavigationView {
List{
ForEach(questions){question in
Text("Question \(question.id)")
}
}
.navigationBarTitle("Welcome") // Also this title is not visible, I've tried changing color.
.navigationTitle(categories.title)
}
}
}
struct CategoryView_Previews: PreviewProvider {
static var previews: some View {
CategoryView(categories: categories[1])
}
}
提前致谢
您正在将字符串传递给 CategoryView(categories: category.title)
的初始化程序。去掉最后的.title
,传入分类CategoryView(categories: category)
.
至于导航标题,修饰符需要在 NavigationView
内部而不是附加到 NavigationView
本身。这是因为您可以将多个视图推送到具有不同导航栏标题的一个 NavigationView。
NavigationView {
List {
ForEach(questions) { question in
Text("Question \(question.id)")
}
} // end List
.navigationBarTitle("Welcome")
} // end NavView