列表页:
使用NavigationLink跳转
import SwiftUI
struct MPAlbumView: View {
@State var dataArr: [MPAlbumModel] = []
var body: some View {
ScrollView {
LazyVStack {
ForEach(dataArr) { item in
NavigationLink(destination: MPAlbumDetailView(model: item)) {
HStack() {
Image(item.name)
.resizable()
.scaledToFill()
.frame(width: 100, height: 60)
.clipped()
Text(item.name)
.frame(maxWidth: .infinity, alignment: .leading)
.foregroundColor(Color.black)
Image(systemName: "chevron.forward")
.foregroundColor(Color.black)
}
.padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
}
Divider()
}
}
.onAppear {
createDataArr()
}
}
.padding(EdgeInsets(top: 1, leading: 0, bottom: 0, trailing: 0))
}
private func createDataArr() {
dataArr.removeAll()
var arr: [MPAlbumModel] = []
arr.append(MPAlbumModel(name: "IMG_5221"))
arr.append(MPAlbumModel(name: "IMG_5968"))
arr.append(MPAlbumModel(name: "IMG_5969"))
dataArr.append(contentsOf: arr)
}
}
struct MPAlbumView_Previews: PreviewProvider {
static var previews: some View {
MPAlbumView()
}
}
struct MPAlbumModel: Identifiable {
let name: String
var id: String { name }
}
详情页:
自定义导航上的返回按钮
使用环境包装器(Environment)返回上页
import SwiftUI
struct MPAlbumDetailView: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
//@Environment(\.dismiss) var dismiss // #available(iOS 15.0, *)
var model : MPAlbumModel?
var body: some View {
NavigationView {
Image(model?.name ?? "")
.resizable()
.scaledToFit()
.frame(maxWidth: .infinity, maxHeight: .infinity)
.clipped()
}
.navigationTitle("\(model?.name ?? "")")
.navigationBarBackButtonHidden()
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button {
presentationMode.wrappedValue.dismiss()
//dismiss()
} label: {
Image(systemName: "chevron.backward")
.foregroundColor(Color.black)
}
}
}
}
}
struct MPAlbumDetailView_Previews: PreviewProvider {
static var previews: some View {
MPAlbumDetailView()
}
}