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

如何根据内容是否为空隐藏Eureka表单的行或分区

解决Eureka表单中根据值隐藏行/分区的问题

首先,咱们来分析你当前代码里的核心问题:你设置的hidden条件完全偏离了需求——你在判断当前行是否存在,而不是判断行对应的内容(car?.internComment)是否为空。因为当前行就是你正在配置的Comment行,form.rowBy(tag: "Comment")永远能找到它,所以这个条件的逻辑完全起不到根据内容判断隐藏的作用。

一、修复单个行的隐藏逻辑(以Comment行为例)

如果你希望当car?.internComment为空(或空白字符串)时隐藏该行,正确的做法是直接判断这个值的状态:

+++ Section("Comment") <<< TextRow() { 
    $0.tag = "Comment" 
    $0.title = car?.internComment 
    $0.cell.textLabel?.numberOfLines = 0 
    $0.hidden = Condition.function([]) { _ in
        // 逻辑:如果internComment是nil,或者是空白字符串,就隐藏该行
        guard let comment = car?.internComment else { return true }
        return comment.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
    }
}

二、实现整个分区的隐藏

如果你想实现整个分区无内容时隐藏(比如当car?.name为空时,隐藏"Car"分区),可以给分区本身设置hidden属性:

+++ Section("Car") { section in
    section.hidden = Condition.function([]) { _ in
        // 检查分区对应的核心字段是否为空
        guard let carName = car?.name else { return true }
        return carName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
    }
} <<< TextRow() { $0.title = car?.name } 

三、注意事项

  1. 如果你的car对象后续会动态更新(比如网络请求后赋值),更新完car后需要调用form.reload()来触发隐藏条件的重新计算,让表单刷新状态。
  2. 如果隐藏条件依赖其他表单行的值(而不是model里的值),需要把依赖行的tag放到Condition.function的参数数组里,比如Condition.function(["OtherTag"]),这样当依赖行变化时,当前行的隐藏状态会自动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:02:43