首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

点击时SwiftUI按钮不会灰显

是因为按钮的状态没有正确设置。在SwiftUI中,按钮的状态可以通过修改其绑定的变量来控制。当按钮被点击时,绑定的变量会发生改变,从而触发界面的刷新。

要解决按钮不会灰显的问题,可以按照以下步骤进行操作:

  1. 创建一个绑定的变量,用于控制按钮的状态。例如,可以使用@State属性包装器来创建一个布尔类型的变量,表示按钮是否可用。
代码语言:txt
复制
@State private var isButtonEnabled = true
  1. 在按钮的disabled修饰符中使用绑定的变量来控制按钮的可用状态。
代码语言:txt
复制
Button(action: {
    // 按钮点击事件
}) {
    Text("按钮")
}
.disabled(!isButtonEnabled)
  1. 当需要禁用按钮时,修改绑定的变量的值。
代码语言:txt
复制
isButtonEnabled = false

这样,当isButtonEnabledfalse时,按钮将变为灰显状态,点击无效。当isButtonEnabledtrue时,按钮将恢复可用状态。

关于SwiftUI按钮的更多信息和使用方法,可以参考腾讯云的官方文档:SwiftUI按钮

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SwiftUI 视图中打开 URL 的若干方法

    访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验 本文将介绍在 SwiftUI 视图中打开 URL 的若干种方式,其他的内容还包括如何自动识别文本中的内容并为其转换为可点击链接...image-20220520182722773 SwiftUI 1.0( iOS 13、Catalina ) 在视图中,开发者通常需要处理两种不同的打开 URL 的情况: 点击一个按钮( 或类似的部件...)打开指定的 URL 将文本中的部分内容变成可点击区域,点击后打开指定的 URL 遗憾的是,1.0 时代的 SwiftUI 还相当稚嫩,没有提供任何原生的方法来应对上述两种场景。...3.0 时代,随着 Text 功能的增强和 AttributedString 的出现,SwiftUI 终于补上了另一个短板 —— 将文本中的部分内容变成可点击区域,点击后打开指定的 URL。...handler 的返回结果 handled 和 discarded 都将阻止 url 继续向下传递,它们之间的不同只有在式调用 openURL 才会表现出来。

    7.8K31

    解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

    如果仅从上述两个例子考虑,无论状态调整是否及时,都不会出现什么错误的结果。但是,当应用程序处于某些特殊状态或用户进行某些特定操作,状态更新的滞后会导致不可接受的后果。...它的复现条件非常简单:在真机上测试( 模拟器上不容易复现 )点击 “GO” 按钮进入下一层视图点击 “Show Sheet” 按钮弹出 Sheet通过下滑手势取消 Sheet在 Sheet 取消后(动画结束...再次执行上述过程,您会发现在返回上层视图后,应用并不会锁死,一切都恢复了正常。然而,明显地,强迫用户点击 “Dismiss” 按钮并不是一个好的选择,特别是在没有屏蔽手势取消 Sheet 的情况下。...它的复现条件如下:iOS 16 系统,在真机或模拟器上测试点击视图列表中的按钮,可以进入下一级视图。...请至少进入第三级视图滚动当前视图当视图处于滚动状态点击 NavigationStack 左上角的 “Back” 按钮

    707110

    el-table使用expand可点击整行展开并且在没有数据隐藏展开按钮

    无数据隐藏展开按钮当行内容过多并且不想显示横向滚动条时或者 点击该行可以获取子集数据可以使用 Table 展开行功能但是 type = expand 有一个比较坑的点是在没有子集数据,也会展示展开箭头...,如修改方案有三步:// 第一步 el-table标签添加 row-class-name(行的 className 的回调方法):row-class-name="iconHide"// 第二步 无子集不展示下拉箭头...点击整行均可展开//el-table中标签添加row-key="id":expand-row-keys="expands" // 可以通过该属性设置 Table 目前的展开行,需要设置 row-key...@row-click="clickRowHandle" // 当某一行被点击时会触发该事件// 定义expandsdata(){ expands:[]}// methodsmethods: {

    2.4K10

    优化在 SwiftUI List 中显示大数据集的响应效率

    本文将通过一个优化列表视图的案例,展现在 SwiftUI 中查找问题、解决问题的思路,其中也会对 SwiftUI 视图的式标识、@FetchRequest 的动态设置、List 的运作机制等内容有所涉及...列表视图的初始化和 body 求值 如果对 SwiftUI 的 NavigationView 有一定了解的话,应该知道 SwiftUI 会对 NavigationLink 的目标视图进行预实例化(但不会对...但在某些情况下,我们需要使用式标识( Explicit identity )的方式来帮助 SwiftUI 辨认视图。...新的问题 细心的朋友应该可以注意到,运行解决方案一的代码后,在第一次点击 bottom 按钮,大概率会出现延迟情况(并不会立即开始滚动)。...由于整个的滚动过程中仅实例化并绘制了 100 多个子视图,对系统的压力并不大,因此在经过反复测试后,首次点击 bottom 按钮会延迟滚动的问题大概率为当前 ScrollViewProxy 的 Bug

    9.2K20

    解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

    如果仅从上述两个例子考虑,无论状态调整是否及时,都不会出现什么错误的结果。但是,当应用程序处于某些特殊状态或用户进行某些特定操作,状态更新的滞后会导致不可接受的后果。...它的复现条件非常简单: 在真机上测试( 模拟器上不容易复现 ) 点击 “GO” 按钮进入下一层视图 点击 “Show Sheet” 按钮弹出 Sheet 通过下滑手势取消 Sheet 在 Sheet 取消后...然而,明显地,强迫用户点击 “Dismiss” 按钮并不是一个好的选择,特别是在没有屏蔽手势取消 Sheet 的情况下。...它的复现条件如下: iOS 16 系统,在真机或模拟器上测试 点击视图列表中的按钮,可以进入下一级视图。...请至少进入第三级视图 滚动当前视图 当视图处于滚动状态点击 NavigationStack 左上角的 “Back” 按钮

    34620

    在 Text 中实现基于关键字的搜索和定位

    image-20220822084740855切换搜索结果可自动定位到结果所在的位置点击非当前高亮关键字,会自动将其设置为当前高亮关键字并滚动至视图中心位置scrollTo_keyword2_2022...image-20220822161247454点击切换按钮定位到对应的搜索结果为 TranscriptionRow 视图添加式标识符,并通过 ScrollViewProxy 滚动到指定的位置。...onAppear,每个视图退出显示窗口都会调用它的 onDisapper。...} else { return position.last }}locate_onScreen_2022-08-22_17.49.52.2022-08-22 17_50_35点击搜索结果切换当前选择点击非选择中的搜索结果...使用 safeAreaInset ,我们可以将搜索栏的区域设置为 List 下方的安全区域,这样既可以实现类似 Tab 覆盖 List 的效果,同时也不会遮盖 List 最下方的数据。

    4.2K30

    一段因 @State 注入机制所产生的“灵异代码”

    打印 Parent View update),Sheet 代码块中的 SheetInitMonitorView 没有任何输出( 意味着闭包没有被调用 ),只有在模态视图进行显示SwiftUI 才执行...ContextView 求值被调用,因此也不会让 n 与 ContextView 创建关联。...在 SwiftUI 早期的版本中,对于分别位于不同上下文的独立的视图树,开发者需要式为 Sheet 视图树注入环境依赖。后期版本已为开发者自动完成该注入工作。...Sheet 中的 Text 显示 n = 1点击 Sheet 中的 Close 按钮,执行 Button 闭包,重新获得 n 的当前值( n = 2 ),打印值为 2当 ContextView 中包含...在面对这些“灵异现象”,如果我们能对其进行更多的研究,那么不仅可以在今后避免类似的问题,而且在分析的过程中,也能对 SwiftUI 的各种运行机制有深入的掌握。希望本文能够对你有所帮助。

    1.9K20

    看房、打碟、开特斯拉车门、吸尘攒金币:刚刚,第一批把Vision Pro抱回家的人已经开玩了

    有人在拿到它的第一间就看了场霉霉的现场会,这下电影票都省了。 就像 Vision Pro 刚刚发布大家所预测的那样,这款头最大的优势可能不是硬件,而是开发者生态。...凭借在 iOS 和 iPadOS 等硬件上打下的基础,Vision Pro 的生态构建有着明显的优势:开发者可以使用 iOS 和 iPadOS 上已有的框架 ——SwiftUI、RealityKit、ARKit...当然,从目前的评测结果来看,Vision Pro 还是有一些「硬伤」的,比如头太重,长时间佩戴不舒适;续航时间不够长,插电使用活动范围受限;虚拟键盘点击不方便;视场角小,画面有黑框等等。...这些问题的存在会让人产生疑问:等这波热情退却,已经购买 Vision Pro 的人会不会让这款设备在自己架子上吃? 但有件事是毋庸置疑的,那就是当前的虚拟现实设备正变得越来越好。...当时,他从头中看到的画面大概是这样的: ‍ 但现在,他看到的画面将是这样的: 【关注机器之心视频号,第一间看到有趣的AI内容】 Karpathy 表示,虽然还没有哪款头可以让他日常使用,但他不会放弃尝试这些新产品

    11910

    SwiftUI 的动画机制

    比如,由于下面代码中的 animation 没指定特定的依赖项,因此,点击按钮后,位置与颜色都会产生平滑动画。...startAnimation 与 linear 相关联 AnimationDataMonitorView (可动画部件)符合 Animatable 且依赖了 startAnimation 动画处理过程: 点击按钮改变依赖项...比如,在出场动画进行中,将状态 show 恢复成 true ,SwiftUI 将会保留当前的分支状态(不会重新创建视图,参见本文附带的范例)。...在 SwiftUI 中,为视图设置式识别有两种方式:ForEach 和 id 修饰符。...这意味着,当数组中出现了两个同样的元素(点击添加按钮),SwiftUI 将无法正确识别我们的意图 —— 究竟是想对那个元素(值相同意味着标识也相同)进行操作。

    14.8K40

    探索 App Clips

    App Clips类似微信的小程序,不需要式的去App Store里下载,苹果会在对应的时机进行下载。...◆ ◆  ◆ 二进制下载 对于App Clips二进制的下载有两种情况,一种是手机解锁的情况下,系统会在卡片页展示过程中就开启后台下载,点击Open按钮即可打开App Clips。...如果调起App Clips手机处于锁屏状态,在卡片页不会开启后台下载,当用户点击Open后才会开始下载并展示loading页面。...例如在使用定位功能,App Clips不需要用户的完整授权,可以请求“部分授权”,用户可以在卡片页选择是否关闭,就是卡片页下方蓝色按钮。...◆ ◆  ◆ 注意点 下面这些库在App Clips不支持,编译不会报错,但调用时会出现调用无效等问题。

    1.9K20

    SwiftUI 4.0 的全新导航系统

    ⚠️ 在使用堆栈管理系统的情况下,请不要在编程式导航中混用声明式导航,这样会破坏当前的视图堆栈数据 下面的代码,如果点击声明式导航,将导致堆栈数据重置。...EnvironmentObject var store: MyStore var body: some View { // 可以在 List 中直接绑定数据,无需通过 Button 式进行修改...4.0 中,在 List 绑定了数据后,通过 List 构造方法创建的循环或 ForEach 创建的循环中的内容( 不能自带点击属性,例如 Button 或 onTapGesture ),将被隐式添加...在三栏状态下隐藏 Sidebar ( 最左侧 )栏 all 显示所有的栏 automatic 根据当前的上下文自动决定显示行为 上述选项并非适用于所有的平台,例如,在 macOS 上,detalOnly 不会起作用...相当一部分开发者由于版本适配的原因并不会使用新的 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 中获得灵感 如何在老版本中运用编程式导航思想 如何让新老版本的程序都能享受系统提供的便利

    10.3K62

    避免 SwiftUI 视图的重复计算

    创建新实例 将新实例与 SwiftUI 当前使用的实例进行比对 如实例发生变化,用新实例替换当前实例,对实例的 body 求值,并用新的视图值替换老的视图值 视图的存续期不会因为实体的更替有所改变 由于...在点击 random age 按钮修改 age 属性后,尽管 StudentNameView 中并没有使用 age 属性,但 SwiftUI 仍然对 StudentNameView 和 StudentAgeView...这是因为,我们将 Student 类型作为参数传递给了子视图,SwiftUI 在比对实例的时候,并不会关心子视图中具体使用了 student 中的哪个属性,只要 student 发生了变化,那么就会重新计算...func sendID(_ id: Int) { self.selection = id } } 当点击某一个 CellView 视图的按钮后,所有的 CellView ( 当前...图片 这是因为,乍看起来,我们并没有在 CellView 中引入会导致更新的 Source of Truth,但由于我们将 store 放置在闭包当中,点击按钮后,因为 store 发生了变动,从而导致

    9.3K81

    如何结合 Core Data 和 SwiftUI

    为了进行试用,请点击 “Add Entity” 按钮创建一个新实体,然后双击其名称将其重命名为 “Student”。...我们需要确保该获取请求随着时间的推移保持最新,以便在创建或删除学生,我们的 UI 保持同步。 SwiftUI 有一个解决方案,而且——您猜对了——这是另一个属性包装器。...为了解决这个问题,我们将在列表下方创建一个按钮,每次点击都会添加一个新的随机学生,但是首先我们需要一个新属性来存储托管对象上下文。 让我重申一下,因为这很重要。...我们无法在代码中看到该类,因为它是在构建项目自动生成的,就像 Core ML 的模型一样。...现在,您可能认为这需要大量的学习,但并不会带来很多结果,但是您现在知道什么是实体和属性,知道什么是托管对象和请求,并且已经了解了如何保存更改。

    11.8K30

    SwiftUI 的方式进行布局

    最近时常有朋友反映,尽管 SwiftUI 的布局系统学习门槛很低,但当真正面对要求较高的设计需求,好像又无从下手。SwiftUI 真的具备创建复杂用户界面的能力吗?...offset 则是在渲染层面进行的位置调整,即使出现了位置变化,其他视图在布局,并不会将其位移考虑在其中。...在上面的代码中,由于两个视图使用了同样的动画曲线设定,因此,在移动不会出现分离的情况。...尽管 Spacer 给定了明确的尺寸,但在状态二,受限于建议尺寸,其并不会参与布局。...稍不注意便会出现转场完全失效或部分失效的情况,例如在本例中,如果在 Button 中( 切换 show 状态 )添加 withAnimation 进行式动画设定,将导致进入转场失效。

    3.3K00

    SwiftUI @State @Published @ObservedObject 深入理解和使用

    1.SwiftUI 是Apple 新出面向未来、跨多端解决方案、声明式编程 SwiftUI最新版本 2.0 但是需要 IOS 14 支持,多数现在还用的是IOS 13 所以很多不完善的东西都用SwiftUIX...@State 介绍 因为SwiftUI View 采用的是结构体,当创建想要更改属性的结构体方法,我们需要添加mutating关键字,例如: mutating func doSomeWork() 然而...比如我们定义的数据结构Model,前提是 @Published 要在 ObservableObject 下使用 然后用 @ObservedObject 来引用这个对象,当然@State 不会报错,但是无法更新...= 1 }, label: { Text("更新数据") }) } } } 不出意外上面代码点击按钮就会更新数据...wrapperModel.workModel.count += 1 }, label: { Text("更新数据") }) } } } 这时候点击按钮还会更新数据吗

    3.2K10
    领券