如何在UITableView中显示数组字符串?cellForRowAt分支赋值疑问
在cellForRowAt的if/else分支中设置指定文本的解决方案
嘿,我来帮你搞定这个问题!要在cellForRowAt的if/else分支里让nameResult.text显示title、labelResult显示kf,其实很简单,咱们结合常见的数据源场景来写代码:
场景1:数组元素是字典类型
假设你的数据源数组包含字典,判断条件基于字典里的某个字段:
// 示例数据源 let dataArray: [Any] = [["type": "special", "value": "foo"], ["type": "normal", "value": "bar"]] override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // 替换成你实际的cell标识符和自定义cell类 let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellID", for: indexPath) as! YourCustomTableViewCell let item = dataArray[indexPath.row] // 根据字典里的type字段做分支判断 if let itemDict = item as? [String: String], itemDict["type"] == "special" { // 满足条件时设置指定文本 cell.nameResult.text = "title" cell.labelResult.text = "kf" } else { // 其他分支同样设置指定文本(如果你的需求是不管分支都显示的话) cell.nameResult.text = "title" cell.labelResult.text = "kf" } return cell }
场景2:数组元素是自定义模型
如果你的数据源是自定义模型数组,判断条件基于模型的属性:
// 自定义模型示例 struct DataItem { var itemType: Int var content: String } // 示例数据源 let dataArray: [DataItem] = [DataItem(itemType: 0, content: "test1"), DataItem(itemType: 1, content: "test2")] override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellID", for: indexPath) as! YourCustomTableViewCell let model = dataArray[indexPath.row] // 根据模型的itemType属性做分支判断 if model.itemType == 0 { cell.nameResult.text = "title" cell.labelResult.text = "kf" } else { cell.nameResult.text = "title" cell.labelResult.text = "kf" } return cell }
几个关键提醒
- 确保你的自定义cell已经正确关联了
nameResult和labelResult这两个UILabel的IBOutlet,不然会出现nil崩溃 - 如果不管if/else的判断结果如何,都要显示这两个固定文本,其实可以把赋值代码提到if/else外面,避免重复代码
- 如果是只有满足特定条件时显示指定文本,其他情况显示别的内容,只需要修改else分支里的赋值即可
内容的提问来源于stack exchange,提问作者Ivan Kisin
相关产品推荐
相关产品推荐

