#listview #navigationview #swiftui-navigationlink
#listview #NavigationView #SwiftUI-navigationlink
Вопрос:
Я создал a MenuList
, a MenuListElementView
и a MenuListElement
. В моем MenuList
struct MenuList {
static let listData: [MenuListElement] = [
MenuListElement(elementID: 0, icon: Constants.IconNames.smileyFace, title: Constants.IconTitles.title1, color: Constants.Colors.gray, numbers: 2),...
}
и так далее, я создал 10 отдельных элементов списка.
В моем MenuListElement
struct MenuListElement: Identifiable {
var id: Int {
return elementID
}
var elementID: Int
var icon: String
var title: String
var color: Color
var numbers: Int
}
В моем MenuListElementView
случае я просто разработал, каким должен быть каждый из элементов списка.
Наконец, я разработал этот MenuView
Теперь, что я хочу сделать, это перейти к другому назначению в каждом MenuListElement
при нажатии в этом коде.
NavigationView{
List(MenuList.listData) { item in
MenuListElementView(item: item)
}
}
Допустим, я хочу перейти к тому, AuthorView
когда MenuLView
нажимается Yazarlar, и к SearchView
тому, когда нажимается Arama. Я хочу 10 разных назначений View
.
Ответ №1:
Я изменил свой MenuListElement
, чтобы иметь возможность отправлять представление внутри него.
struct MenuListElement: Identifiable {
var id: Int {
return elementID
}
var elementID: Int
var icon: String
var title: String
var color: Color
var numbers: Int
var view: Any
}
Я изменил свое List
представление на
List(MenuList.listData) { item in
Button(action: {
self.isOpen = true
}) {
MenuListElementView(item: item)
.fullScreenCover(isPresented: $isOpen) {
AnyView(_fromValue: item.view)
}
}
}
и изменил мой MenuList
на
struct MenuList {
static let listData: [MenuListElement] = [
MenuListElement(elementID: 0, icon: Constants.IconNames.smileyFace, title: Constants.IconTitles.title1, color: Constants.Colors.gray, numbers: 2, view: MembershipView()),...
Таким образом, каждый элемент списка содержит информацию о представлении, поэтому с помощью кнопки я могу напрямую перейти к нужному представлению.