swift - 如何在 SwiftUI 的不同视图中保留列表
问题描述
在我的 SwiftUI 应用程序中,我在屏幕底部有选项卡视图。为了保持代码干净,我希望每个选项卡都位于单独的视图/类中。在一个标签中,我有列表。由于某些原因,我无法将列表移动到单独的视图中。这是我的初始代码:导入 SwiftUI
struct ContentView: View {
var rooms : [Rooms] = []
@State var selectedView = 1
var body: some View {
VStack {
TabView() {
List(rooms) { rooms in
Image(systemName: "heart.fill")
HStack {
VStack(alignment: .leading) {
Text(rooms.name)
.font(.headline)
Text("members")
.font(.body)
}
}
}.tabItem { Image(systemName: "waveform.path.ecg") }.tag(1)
ExtractedView().tabItem { Text("Tab Label 2") }.tag(2)
}
}
}
}
这就是我尝试制作单独视图的方式:
struct ContentView: View {
var rooms : [Rooms] = []
@State var selectedView = 1
var body: some View {
VStack {
TabView() {
ExtractedView1(rooms: rooms).tabItem { Image(systemName: "waveform.path.ecg") }.tag(1)
ExtractedView2().tabItem { Text("Tab Label 2") }.tag(2)
}
}
}
}
struct ExtractedView1: View {
let rooms : Rooms
var body: some View {
List(rooms) { rooms in
Image(systemName: "heart.fill")
HStack {
VStack(alignment: .leading) {
Text(rooms.name)
.font(.headline)
Text("members")
.font(.body)
}
}
}
}
}
知道为什么这是错误的吗?我收到以下错误:
错误 1:[Rooms] 不能转换为 Rooms
错误 2:无法推断通用参数“SelectionValue”
如果建议这样做,我什至会将其移至不同的 swift 文件。
解决方案
看起来房间数组[Room]
和单个Room
对象数据类型之间存在一些混淆。只需确保您使用 List 进行视图以接受一组房间:[Room]
以便它可以遍历它们
struct Room: Identifiable {
let id = UUID()
let name: String
}
struct ContentView: View {
var rooms : [Room] = []
@State var selectedView = 1
var body: some View {
VStack {
TabView() {
ExtractedView1(rooms: rooms).tabItem { Image(systemName: "waveform.path.ecg") }.tag(1)
ExtractedView2().tabItem { Text("Tab Label 2") }.tag(2)
}
}
}
}
struct ExtractedView1: View {
let rooms : [Room]
var body: some View {
List(rooms) { room in
Image(systemName: "heart.fill")
HStack {
VStack(alignment: .leading) {
Text(room.name)
.font(.headline)
Text("members")
.font(.body)
}
}
}
}
}
struct ExtractedView2: View {
var body: some View {
Text("ExtractedView2")
}
}
推荐阅读
- css - 无法使用 CSS 内联图片
- ios - 拖动 iboutlet UICollectionResuseable Swift 4.2 时崩溃
- c++ - 为什么临时延长寿命会导致多次调用析构函数?
- csom - 无法更改项目所有者
- xml - Perl XML::Easy:读取 SVG 路径数据
- python - 如何在 Linux 上首次使用 Google Calendar API?
- quartz-scheduler - 我可以安排一个由特定节点/服务器选择的石英作业吗?
- android-studio - 将 Google Analytics 添加到颤振应用程序的问题
- laravel - 按钮没有响应 laravel
- c# - C# 将数据库设置为我想要的特定数据