禁用和启用按钮
使用 disabled 修饰符控制交互性。
禁用和启用按钮 是 CoddyKit 上的免费 SwiftUI Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SwiftUI Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SwiftUI Academy 课程共包含 4 节课。
有时点击应该等待
并非每个按钮都应该始终可以点击。例如,提交按钮可能要等表单有效后才能使用。SwiftUI 通过 disabled 修饰符处理这种情况。🚦
disabled 修饰符
为任意控件添加 disabled,并传入 true 或 false。传入 true 时,按钮会立即停止响应点击。
Button("Send") { send() }
.disabled(true)使用条件控制
不要传入固定值,而是传入一个条件。随着底层数据变化,按钮会自动启用或禁用。
Button("Send") { send() }
.disabled(message.isEmpty)与状态关联
将 disabled 与一个状态值配对后,SwiftUI 会在每次变化时重新评估它。数据一更新,按钮就会立即作出响应。
@State private var name = ""
Button("Save") { save() }
.disabled(name.isEmpty)变暗效果
禁用的按钮会自动显示为变暗。这一视觉提示会告诉用户它还未准备好,无需您额外设置样式。
验证表单
一个经典用途是表单验证:在所有必填字段都通过检查前,保持操作按钮不可用。
Button("Register") { register() }
.disabled(!isFormValid)防止重复点击
执行耗时任务时,请禁用按钮,避免用户再次点击。在任务运行期间,将加载中标志设为 true。
Button("Upload") { startUpload() }
.disabled(isLoading)禁用整个分组
将 disabled 应用于容器后,其中的每个控件都会继承这一设置。一个修饰符就能同时锁定整个区域。
VStack {
Button("A") { a() }
Button("B") { b() }
}
.disabled(isLocked)子视图无法重新启用
父视图禁用后,子视图无法自行重新启用。整个链条中限制最严格的 disabled 值会生效。
禁用状态仍然传达信息
禁用的按钮并不是出了问题,而是在如实传达状态。它表示某个操作目前不可用,引导用户先完成应做的事情。
翻转值即可启用
要重新启用,只需再次让条件变为false。更新它所依赖的状态后,SwiftUI 就会让按钮恢复可用。
Button("Confirm") { confirm() }
.disabled(!agreedToTerms)快速检查
最后检查一下启用和禁用。
回顾
太棒了!disabled 修饰符会根据条件锁定按钮、自动使其变暗,并在值翻转回来时重新启用。🚦
用 AI 导师学习 Swift — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「禁用和启用按钮」课时是免费的吗?
是的 — 「禁用和启用按钮」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SwiftUI Academy 课程的其余内容,请升级到 CoddyKit PRO。 SwiftUI Academy 课程共包含 4 节课。
「禁用和启用按钮」这节课中我会学到什么?
使用 disabled 修饰符控制交互性。 你通过在浏览器中直接运行的动手代码来练习 SwiftUI Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 SwiftUI Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 SwiftUI Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「禁用和启用按钮」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 SwiftUI Academy 课中编写并运行代码吗?
能。每节 SwiftUI Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。