You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SwiftUI View结构体内部直接为body添加修饰符(如AccessibilityIdentifier)?

解决方案

当然有优雅的实现方式,完全可以在MyView结构体内部完成,不需要外部修改或新增View层。

核心思路

SwiftUI的body要求返回单个View,所以首先需要用无布局容器(比如Group)将多个子View包裹起来,然后直接在这个容器上添加全局修饰符(比如accessibilityIdentifier)——Group不会改变原有View的布局逻辑,只是单纯组合视图,非常适合这种场景。

修改后的代码示例

public struct MyView: View {
  public var body: some View {
    Group {
      Text("My text 1")
      Text("My text 1")
    }
    .accessibilityIdentifier("my_view_global_identifier")
    // 还可以添加其他全局修饰符,比如.padding()、.background(Color.gray)等
  }
}

给单个子View加修饰符的场景

如果需要给每个Text单独设置accessibilityIdentifier,同样可以直接在内部处理:

public struct MyView: View {
  public var body: some View {
    Group {
      Text("My text 1")
        .accessibilityIdentifier("text_item_1")
      Text("My text 2")
        .accessibilityIdentifier("text_item_2")
    }
  }
}

补充说明

你提供的原始代码本身存在编译问题:SwiftUI的body必须返回单个View,直接放置多个Text会报错,用Group(或VStack/HStack,如果需要指定布局方向)包裹是必要的步骤,刚好可以利用这个容器来统一添加修饰符,一举两得。

内容的提问来源于stack exchange,提问作者Mirek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:20