小编car*_*ram的帖子

SwiftUI 如何在 EditMode 更改时执行操作?

我想在 EditMode 更改时执行操作。

具体来说,在编辑模式下,用户可以选择一些项目进行删除。之后他通常会按下垃圾箱按钮。但他也可能按“完成”。当他稍后再次按“编辑”时,先前选择的项目仍处于选中状态。我希望清除所有项目。

struct ContentView: View {
    @State var isEditMode: EditMode = .inactive
    @State var selection = Set<UUID>()
    var items = [Item(), Item(), Item(), Item(), Item()]

    var body: some View {
        NavigationView {
            List(selection: $selection) {
                ForEach(items) { item in
                    Text(item.title)
                }
            }
            .navigationBarTitle(Text("Demo"))
            .navigationBarItems(
                leading: EditButton(),
                trailing: addDelButton
            )
            .environment(\.editMode, self.$isEditMode)
        }
    }

    private var addDelButton: some View {
        if isEditMode == .inactive {
            return Button(action: reset) {
                Image(systemName: "plus")
            }
        } else {
            return Button(action: reset) { …
Run Code Online (Sandbox Code Playgroud)

list editmode swiftui

7
推荐指数
2
解决办法
4677
查看次数

如何在横向的 SwiftUI 中的 Master-Detail1-Detail2 视图中显示丢失的后退按钮?

我正在使用 NavigationView 和 NavigationLinks 从 MasterView 移动到 Detail1View,然后进一步移动到 Detail2View。

在处于纵向模式的 iPhone 上,所有细节视图都会显示后退按钮,并允许从 Detail2View 向后移动到 Detail1View,然后进一步移动到 MasterView。

但是在横向模式的 iPhone 或 iPad 上,当从 Detail1View 移动到 Detail2View 时,没有后退按钮。因此不可能回到Detail1View。

添加第二个 NavigationView 允许有一个后退按钮,但这并不是一个理想的解决方法,因为第二个 UINavigationViewController 显示在第一个下方。

struct MyMasterView: View {
    private let names = ["Homer", "Marge", "Bart", "Lisa"]

    var body: some View {
        List() {
            Section(header: Text("The Simpsons")) {
                ForEach(names, id: \.self) { name in
                    NavigationLink(destination: MyDetail1View(name: name)) {
                        Text(name)
                    }
                }
            }
        }
        .navigationBarTitle(Text("My App"))
    }
}

struct MyDetail1View: View {
    var name: String

    var …
Run Code Online (Sandbox Code Playgroud)

landscape uisplitviewcontroller ios navigationview swiftui

6
推荐指数
1
解决办法
956
查看次数