如何显示视图中的某些行?

时间:2020-02-15 14:52:29

标签: ios swiftui swiftui-list

视图中的列表仅限于显示列。我想在视图中显示的列中包含所需的列。

我应该怎么办?

iOS

enter image description here

在图片上方,showMyRow为假。

enter image description here

按钮操作后,showMyRow为true。 如果showMyRow为true,请在7row处显示我

2 个答案:

答案 0 :(得分:0)

更新的答案: 不知道我是否完全理解您的问题,但是如果您只想要一个可以添加和删除内容的列表,那么最简单的方法是创建一个单独的SwiftUI文件,其中包含该行的结构和一个ObservableObject类,该类检查是否有变化。

1)具有ListItem struct和ObservableObject类的SwiftUI文件:

import SwiftUI

struct ListItem: Identifiable {
    let id = UUID()
    let title: String
}

class Items: ObservableObject {
    @Published var rows = [ListItem]()
}

2)ContentView及其图像视图和列表:
它还具有removeItems方法,因此您可以滑动任何行以将其删除。

struct ContentView: View {

    @ObservedObject var items = Items()

    var body: some View {
        NavigationView{
            VStack{
                Image("image")
                    .resizable()
                    .frame(width: 200, height: 200)
                    .padding(50)
                List {
                    ForEach(items.rows) { item in
                        Text(item.title)
                    }
                .onDelete(perform: removeItems)
                }
            }
        .navigationBarTitle("My List")
            .navigationBarItems(trailing: Button(action : {
                let row = ListItem(title: "New Row")
                self.items.rows.append(row)
            }) {
                Image(systemName: "plus")
            }
            )
        }
    }

    func removeItems(at offsets: IndexSet) {
        items.rows.remove(atOffsets: offsets)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

答案 1 :(得分:0)

我猜您正在尝试在屏幕上水平显示多列?

如果是这样,则可以将列表放在堆栈中

SELECT "DJANGO_ADMIN_LOG"."ID",
       "DJANGO_ADMIN_LOG"."ACTION_TIME",
       "DJANGO_ADMIN_LOG"."USER_ID",
       "DJANGO_ADMIN_LOG"."CONTENT_TYPE_ID",
       "DJANGO_ADMIN_LOG"."OBJECT_ID",
       "DJANGO_ADMIN_LOG"."OBJECT_REPR",
       "DJANGO_ADMIN_LOG"."ACTION_FLAG",
       "DJANGO_ADMIN_LOG"."CHANGE_MESSAGE",
       "AUTH_USER"."ID",
       "AUTH_USER"."PASSWORD",
       "AUTH_USER"."LAST_LOGIN",
       "AUTH_USER"."IS_SUPERUSER",
       "AUTH_USER"."USERNAME",
       "AUTH_USER"."FIRST_NAME",
       "AUTH_USER"."LAST_NAME",
       "AUTH_USER"."EMAIL",
       "AUTH_USER"."IS_STAFF",
       "AUTH_USER"."IS_ACTIVE",
       "AUTH_USER"."DATE_JOINED",
       "DJANGO_CONTENT_TYPE"."ID",
       "DJANGO_CONTENT_TYPE"."APP_LABEL",
       "DJANGO_CONTENT_TYPE"."MODEL"
  FROM "DJANGO_ADMIN_LOG"
  INNER JOIN "AUTH_USER"
    ON ("DJANGO_ADMIN_LOG"."USER_ID" = "AUTH_USER"."ID")
  LEFT OUTER JOIN "DJANGO_CONTENT_TYPE"
    ON ("DJANGO_ADMIN_LOG"."CONTENT_TYPE_ID" = "DJANGO_CONTENT_TYPE"."ID")
  WHERE "DJANGO_ADMIN_LOG"."USER_ID" = :arg0
  ORDER BY "DJANGO_ADMIN_LOG"."ACTION_TIME" DESC
  FETCH FIRST 10 ROWS ONLY

如果有很多列,那么您可以将HStack包装在滚动视图中。

HStack {
    List {
        Text("Hello")
    }
    List {
        Text("There")
    }
}