小编Den*_*l95的帖子

如何使 VStack 可点击以在 SwiftUI 中显示警报

我有一个带有图像和文本的 VStack,我需要使它可点击,以便我可以向用户显示和提醒。我已经尝试过 onTapGesture 方法,但我可以打印语句,但没有显示警报。

有没有其他方法可以获得解决方案?

我已经添加了整个 swift 文件供您参考

代码

@State private var hasOneConnected: Bool = false
@State private var showConnectionAlert = false

private var connectionAlert: Alert {
    Alert.init(title: Text("Oops!"), message: Text("There is an error."), dismissButton: .default(Text("OK")))
}
var body: some View {
    VStack(alignment: .center, spacing: 0) {

        // MARK: - Header
        VStack(alignment: .center, spacing: 0) {
            Spacer().frame(height: 55)
            HStack(alignment: .center, spacing: 25) {
                Spacer()
                Image("Logo")
                Spacer(minLength: 5)
                Text("Zone Control")
                    .foregroundColor(.white)
                Spacer()
            }
            Spacer()
        }
        .frame(height: 100, alignment: .center)
        .background(
            LinearGradient( …
Run Code Online (Sandbox Code Playgroud)

ios swift swift5 swiftui swift5.1

6
推荐指数
2
解决办法
2821
查看次数

如何使用 SwiftUI 在警报中使用导航

我正在开发一个蓝牙应用程序。它有入门和仪表板。在入门上有关于如何使用模块的配对和说明,仪表板控制外围设备。所以我需要使用警报取消配对并将其导航到一个名为Onboarding的不同页面。如何使用警报导航到不同的视图。

代码块

import SwiftUI
import BLE

struct Dashboard: View {

    @EnvironmentObject var BLE: BLE
    @State private var showUnpairAlert: Bool = false
    @State private var hasConnected: Bool = false

    let defaults = UserDefaults.standard
    let defaultDeviceinformation = "01FFFFFFFFFF"

    struct Keys {
        static let deviceInformation = "deviceInformation"
    }

    var body: some View {
        VStack(alignment: .center, spacing: 0) {
            // MARK: - Menu Bar
            HStack(alignment: .center, spacing: 10) {
                VStack(alignment: .center, spacing: 4) {
                    Text(self.hasConnected ? "PodId \(checkForDeviceInformation())":"Pod is not connected")
                        .font(.footnote) …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swift5.1 swiftui-navigationlink

4
推荐指数
1
解决办法
1972
查看次数

Swift - 如何在 swiftUI 中将字符串数组添加到我的列表视图中

我有一个字符串数组

fakeData = ["Array A",
            "Array B",
            "Array C",
            "Array D"]
Run Code Online (Sandbox Code Playgroud)

我如何在 SwiftUI 的 ListView 中实现这个数组?

arrays swiftui swift5.1 swiftui-list

2
推荐指数
1
解决办法
1184
查看次数

一个视图中的多个警报只能在 swiftui 中始终有效

如果布尔值为真,我有两个警报被调用。

警报 - 1 - 如果蓝牙状态存在任何问题而不是开机,则调用它。这是直接从名为 BLE 的 swift 包调用的。代码片段如下。

Alert - 2 - 当您想取消外围设备的配对时会调用它,为用户提供两个选项。取消配对或保持在同一页面上。

问题: 两个警报似乎都运行良好,但如果它们未放置在同一视图中。当我将警报放在同一个视图中时,最后显示的警报会从上到下的顺序被调用。

操作系统读取第一个警报,但只有在调用第二个警报时才会激活它。

如果调用它们,有没有办法使它们都起作用。我提到了下面的解决方案,但我得到了相同的结果。

解决方案 1解决方案 2

有2个代码片段

一、主要应用

import SwiftUI
import BLE

struct Dashboard: View {

    @EnvironmentObject var BLE: BLE
    @State private var showUnpairAlert: Bool = false

    private var topLayer: HeatPeripheral {
        self.BLE.peripherals.baseLayer.top
    }

    var body: some View {
        VStack(alignment: .center, spacing: 0) {
            // MARK: - Menu Bar
            VStack(alignment: .center, spacing: 4) {
                Button(action: {
                    print("Unpair tapped!")
                    self.showUnpairAlert = true
                }) …
Run Code Online (Sandbox Code Playgroud)

uialertview core-bluetooth swiftui swift5.1

2
推荐指数
1
解决办法
730
查看次数