swift - 在 SwiftUI 中按下按钮时更改视图
问题描述
当我按下 SwiftUI 中的按钮时,我想更改视图。
ZStack {
Button(action: {
Settings(logOutAfter24H: true, emailAddress: "example@example.com")
print("Button pressed")
}) {
ZStack {
RoundedRectangle(cornerRadius: 10)
.frame(width: 125, height: 150).foregroundColor(Color.CGreen)
HStack {
Image(systemName: "gear")
Text("Settings").foregroundColor(Color.black)
}
}
}
}
我想切换到Settings
视图。
解决方案
如果您只想将当前视图替换为 SettingsView,您可以尝试:
struct ContentView: View {
@State var showSettingsView = false
var body: some View {
ZStack {
if showSettingsView {
Settings(...)
} else {
settingsButton
}
}
}
var settingsButton: some View {
Button(action: {
self.showSettingsView = true
print("Button pressed")
}) {
ZStack {
RoundedRectangle(cornerRadius: 10)
.frame(width: 125, height: 150).foregroundColor(.green)
HStack {
Image(systemName: "gear")
Text("Settings").foregroundColor(Color.black)
}
}
}
}
}
通过设置的值showSettingsView
你可以决定是显示还是隐藏SettingsView。
或者,您可以使用 aNavigationLink
在导航堆栈上推送新视图或使用 asheet
以模态方式呈现视图:
struct ContentView: View {
@State var showSettingsView = false
var body: some View {
ZStack {
settingsButton
}
.sheet(isPresented: $showSettingsView) {
Settings(...)
}
}
...
}
推荐阅读
- elasticsearch - 过滤词中的多个词
- version-control - 在 YouTrack 提交消息中添加多个工作项
- javascript - 如何在本机反应中正确管理地图初始状态?
- r - 如何使用 auto.arima 函数专门检查 ARIMA 中 AR 或 MA 的 RMSE 值,用于使用 R 的时间序列数据
- javascript - 如何格式化对象的对象
- r - x 轴上多个变量的散点图
- java - while 循环不会执行 SQL 中的所有记录
- azure - SSL/TSL 和普通流量的反向代理如何工作?
- wso2 - WSO2 身份服务器在与 ADFS 服务器集成时抛出 Nullpointerexception
- r - 以毫秒为单位的时间戳序列