ios - 按下按钮时如何显示事件卡

标签 ios swift iphone swiftui

我正在做提醒IOS应用程序。如何显示事件卡按下按钮?

事件添加 View 。[Home.swift] [Home.push 加圆圈按钮打开此 View 。] 1

主页上显示事件卡。[EventList.swift] [事件卡。此卡确实显示在 Home.swift 上] 2

我尝试将tapCount保存到userDefaults.in EventList.swift获取tapCount。因为使用ForEach范围。

Home.swift

var tapCount = 0

Button(action: {}) {
    tapCount += 1

    UserDefaults.standard.set.....
}

EventList.swift

var body: some View {
        let tapCount: Int16 = UserDefault.standard.Integer(...) as! Int16

        ScrollView(.horizontal, showsIndicators: false) {
            HStack {
                ForEach(0 ..< tapCount) { item in
                    EventView()
                }
            }
        }
    }

但不是做,请教。

最佳答案

我昨天在 SwiftUI 中使用 UserDefaults.standart 的解决方案:

  1. 使用所需的变量创建最终类UserData
  2. init() 处从 UserDefaults 设置此变量;
  3. 在需要的View处设置UserData类的@EnvironmentObject var

一些简单的例子:

import SwiftUI

final class UserData: ObservableObject {

    @Published var tapCount: Int? { // remember, it can be nil at the first launch!
        didSet {
            UserDefaults.standard.set(tapCount, forKey: "tapCount")
        }
    }

    init() {
        // Sure you can set it to 0 with UserDefaults.standard.integer(forKey: "tapCount") ?? 0, but be careful with your ForEach loop
        self.tapCount = UserDefaults.standard.integer(forKey: "tapCount")
    }

}

// how to use:
struct SomeView: View {

    @EnvironmentObject var userData: UserDataSettings

    var body: some View {

        if self.userData.tapCount == nil {
            return AnyView(Text("no taps!"))
        } else {
            return AnyView(ScrollView(.horizontal, showsIndicators: false) {
                HStack {
                    // you need to check for nil, else you app may crash. this if...else variant should work
                    ForEach(0 ..< userData.tapCount!) { item in
                        Text("\(item)")
                    }
                }
            })
        }
    }

}

最后一件事:显示 View 时需要设置.environmentObject(UserData())(例如,在SceneDelegate中,如果这是第一个 View )然后将此 userData 变量传递给其他 subview )

关于ios - 按下按钮时如何显示事件卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59062077/

相关文章:

iphone - 选项卡栏不显示任何项目

ios - 使 CGRectMake 框架固定在底部

ios - 使用相同的本地化按钮切换语言应用程序

ios - 在 Swift 中检测摇动手势 SpriteKit

ios - 从 View 框架内编辑 UILabel

ios - 无法在 UItableviewcell 中加载 collectionview

ios - 按不区分大小写的属性对 Realm 结果进行排序

swift - 移动到另一个 .SKS 文件的正确方法

iphone - 如何检测电话 : uri scheme in a web app? 的可用性

IOS,如何在包含不同 subview 的 UITableViewCell 中设置自动布局