gpt4 book ai didi

ios - SwiftUI - 从 ToolbarItem 内的 Button 显示警报

转载 作者:行者123 更新时间:2023-12-04 13:10:56 25 4
gpt4 key购买 nike

我想做一些类似于下面的代码的事情,当用户点击导航栏项目按钮时,它会显示警报。但是下面的代码不起作用,警报不显示。
我无法将警报修饰符添加到 NavigationView因为我的实际应用程序更复杂,而 VStack是另一个文件中的 View ,向同一个 View 添加多个警报修饰符也不起作用(只有最后一个添加有效)。

import SwiftUI

struct SOQuestionView: View {
@State private var showAlert1 = false
@State private var showAlert2 = false

var body: some View {
NavigationView {
VStack {
Text("Click button in toolbar")
}
.navigationBarTitle(Text("Title"))
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button(action: {
showAlert1 = true
}) {
Image(systemName: "square.and.arrow.up")
}
.alert(isPresented: $showAlert1) {
Alert(title: Text("Alert 1"))
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
showAlert2 = true
}) {
Image(systemName: "square.and.arrow.up.fill")
}
.alert(isPresented: $showAlert2) {
Alert(title: Text("Alert 2"))
}
}
}
}
}
}

Live Preview

最佳答案

解决方案是在工具栏之外使用警报并使用不同的构造函数。使用 Xcode 12.1/iOS 14.1 测试。
demo

struct SOQuestionView: View {
@State private var alertItem: String?

var body: some View {
NavigationView {
VStack {
Text("Click button in toolbar")
}
.navigationBarTitle(Text("Title"))
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button(action: {
alertItem = "Alert 1"
}) {
Image(systemName: "square.and.arrow.up")
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
alertItem = "Alert 2"
}) {
Image(systemName: "square.and.arrow.up.fill")
}
}
}
.alert(item: $alertItem) { item in
Alert(title: Text(item))
}
}
}
}

关于ios - SwiftUI - 从 ToolbarItem 内的 Button 显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65433858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com