我有一个带有图像和文本的 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) 我正在开发一个蓝牙应用程序。它有入门和仪表板。在入门上有关于如何使用模块的配对和说明,仪表板控制外围设备。所以我需要使用警报取消配对并将其导航到一个名为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) 我有一个字符串数组
fakeData = ["Array A",
"Array B",
"Array C",
"Array D"]
Run Code Online (Sandbox Code Playgroud)
我如何在 SwiftUI 的 ListView 中实现这个数组?
如果布尔值为真,我有两个警报被调用。
警报 - 1 - 如果蓝牙状态存在任何问题而不是开机,则调用它。这是直接从名为 BLE 的 swift 包调用的。代码片段如下。
Alert - 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)