这是我的第一个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])
}
}
Thanks in advance
您正在向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