你如何在swiftUI中禁用navigationBaritems

Posted

技术标签:

【中文标题】你如何在swiftUI中禁用navigationBaritems【英文标题】:How do you disable a navigationBaritems in swiftUI 【发布时间】:2021-01-30 16:53:35 【问题描述】:

我有一个 .navigationBarItems 按钮,我想根据我的应用程序在做什么来启用/禁用它,但我终其一生都无法弄清楚到底该怎么做?!

我的视图正在通过 NavigationView 拉入我的主应用程序视图,因此我知道栏项目正在正确显示等等。根据我的观点,在导航到它时会被拉入,我在堆栈底部有这段代码:

.navigationBarItems(
                    trailing:
                        Button("End Day") 
                            //do something here
                            scheduleEndDayNotificatons()
                        
                    )

我希望能够切换尾随的“结束日”按钮以启用/禁用,可能基于一些 Bool 状态变量?例如,当用户进入应用程序的某个模式时,它被启用,当他们退出该模式时,它被禁用。我的应用程序是一个锻炼应用程序,所以当他们锻炼时我希望它被启用,而当他们完成锻炼时它被禁用(这是默认设置)。

任何帮助将不胜感激!谢谢!!

【问题讨论】:

【参考方案1】:

我们可以使用修饰符 .disabled 应用于 Button 并将其与一些状态变量链接,例如

@State private var isDisabled = false

// ... other code

.navigationBarItems(
    trailing:
        Button("End Day") 
            //do something here
            scheduleEndDayNotificatons()
        
        .disabled(isDisabled)
    )

【讨论】:

以上是关于你如何在swiftUI中禁用navigationBaritems的主要内容,如果未能解决你的问题,请参考以下文章

我如何知道 SwiftUI 按钮是不是已启用/禁用?

如何禁用 SwiftUI 的默认行为?

如何在 SwiftUI 中禁用子视图上的特定状态更改动画

在 SwiftUi 中禁用默认按钮单击动画

swiftUI如何禁用按钮2秒?

SwiftUI 列表禁用单元格按下