如何在表格视图单元格中快速迭代for循环

Posted

技术标签:

【中文标题】如何在表格视图单元格中快速迭代for循环【英文标题】:How to iterate a for loop in table view cell swift 【发布时间】:2018-04-26 12:51:10 【问题描述】:

我试过这个但没用Iterate over all the UITableCells given a section id 我只需要在单元格中迭代一个 for 循环并计算值并显示在另一个标签计算值或打印我不知道该怎么做。任何帮助都会很棒!我只有单元格的值我看到底部的单元格没有计算值。当我向上滚动时,我得到了单元格值,但顶部的单元格值无法查看或计算。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
  let news = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    return news.count
  

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = myTableView.dequeueReusableCell(withIdentifier: "mycellTVC") as! mycellTVC
    cell.lbl.text = news[indexPath.row]

    return cell
  


  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return 80
  

  @IBOutlet weak var myTableView: UITableView!

  override func viewDidLoad() 
    super.viewDidLoad()
    myTableView.delegate = self
    myTableView.dataSource = self

   

 **This is my cell file**
class mycellTVC: UITableViewCell

  @IBOutlet weak var lbl: UILabel!
  @IBOutlet weak var calculated_value: UILabel!

【问题讨论】:

我在您的代码中看不到任何计算。你想达到什么目标? 你是要实现新闻的添加吗? 请检查我是否已编辑,当我的单元格位于下方且无法计算其值时会产生问题 你能澄清一下你的目标是什么吗?表格视图只有一个部分包含 news.count 作为行数,并且您的代码到目前为止应该可以正常工作... 为了更清楚,我想通过使用 for 循环为所有 10 行打印或另一个标签添加标签中的所有值。 【参考方案1】:

您尝试做的基本操作是从数据源中获取一个值,如果需要将其转换为一个数字,然后将它们加起来。

对于您上面的示例,这可以解决问题:

let news = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

let total = news.map( Int($0)! ).reduce(0)  x, y in
    return x + y


print(total) // 55

要对购物车执行此操作,您的数据源可能是产品列表,可能类似于:

struct Product

    var name: String
    var price: Int
    var quantity: Int


let prod1 = Product(name: "Coka Cola", price: 2, quantity: 2)
let prod2 = Product(name: "Bread", price: 1, quantity: 1)
let prod3 = Product(name: "Sweets", price: 2, quantity: 4)

let shoppingCart = [prod1, prod2, prod3]

let total = shoppingCart.reduce(0)  x, y in
    return x + (y.price * y.quantity)


print(total) // 13

原理相同,只是稍微复杂一点。只要你的数据结构是正确的,它应该是直截了当的

【讨论】:

成功了,谢谢。例如,如果我有 3 个文本字段,例如每行中的名称 A、B、C 和 10 行,我会感到困惑。我正在执行一些计算 A*B 结果存储在 C 中。我从 API 向 B 传递值,但是在编辑 B 之后,当我向上和向下滚动时,它给出的值与我从 API 获得的值相同。如何附加实时编辑值并将其传递给文本字段 当您更改任何值时,您应该更新基础数据。集合/表格视图中的单元格可以在不在视图中时重复使用。因此,例如,如果您有大单元格,则屏幕上可能只能容纳 5 个。您可能只加载了 5 个,也许是 6 个。因此,如果您更新单元格中的值,然后将其卸载并重用于另一个单元格。然后你会丢失你的数据。所以总是依赖数据而不是用户界面 谢谢。我尝试使用数据在表格视图单元格中运行 for 循环以获取我的表格视图屏幕一次仅适合 2 个单元格的所有数据,而其他单元格位于下方。所以我得到了前 2 个单元格的数据,对于下面的其他单元格,我得到“NIL”我尝试了很多解决方案但没有奏效 你不能从不可见的单元格中获取数据(你可以......但你真的,真的不应该)使用底层数据。您根据数据按需创建一个单元格,如果您更新单元格中的数据,则也要更新数据。总是对数据进行计算,而不是单元格本身 查看此答案以了解如何在编辑后更新数据:***.com/questions/32669759/…

以上是关于如何在表格视图单元格中快速迭代for循环的主要内容,如果未能解决你的问题,请参考以下文章

如何以相反的顺序快速迭代for循环?

将表格视图快速添加到表格视图单元格中的问题

如何让共享按钮在 tableview 单元格中快速工作?

如何在快速向上和向下滚动表格时停止自动重新加载表格视图? [关闭]

表格视图单元格中的倒数计时器在滚动后显示不同的值

表格视图中单元格之间的快速距离[关闭]