【问题标题】:Best way to tell the UITableView which data should be display in Swift告诉 UITableView 哪些数据应该在 Swift 中显示的最佳方法
【发布时间】:2018-05-30 17:45:07
【问题描述】:

我是 Swift 新手,我学习了一些教程。 他们正在展示您应该如何通过使用 UITableViewController 来使用 UITableView。 UITableView 中显示的数据存储在 UITableViewController 内的 Array 中。 我没问题。

基于此,我尝试用两个数组制作一个 UITableView:

struct Spending {
    var title: String
    var amount: Float
    var date: Date?
 }

class TableViewControllerSpending: UITableViewController, SpendingProtocol {
        var spendingsTemporary : [Spending] = [Spending(title: "Shoes", amount: 245.99, date: Date())]
        var spendingsPermanent : [Spending] = [Spending(title: "Taxes", amount: 125.50, date: Date())]
}

我想根据导航使用 2 个数组来显示它们。例如,当您单击“我的永久支出”按钮时,UITableView 仅显示“永久”数组数据,或者如果您单击“我的所有支出”,您可以看到 2 个数组的内容。

告诉 UITableView 应该显示哪些数据的最佳解决方案是什么?

谢谢。

【问题讨论】:

  • 流程是什么?用户在某个屏幕上是否有两个按钮,而您为任一按钮显示TableViewControllerSpending?为什么数据被硬编码为TableViewControllerSpending?您不需要在整个应用程序中访问这些数据吗?
  • 我想使用同一个 TableView 来显示我所有的“消费”对象。但这种观点可以通过多种方式达成。换句话说,我正在寻找一种方法来制作用于显示“支出”数组的通用 TableView。我认为最好的方法是将 segue 中的数组传递给 TableView。你怎么看这种方式?

标签: swift uitableview tableview


【解决方案1】:

你可以试试

var isPermanent  = true

//

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return  isPermanent ? spendingsPermanent.count : spendingsTemporary.count 

}

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

    let cell = areaSettTable.dequeueReusableCell(withIdentifier:CellIdentifier1) as! notifyTableViewCell

   if isPermanent {

  }
  else {

  }

    return cell
}

//

根据点击的按钮更改isPermanent然后

tableView.reloadData()

注意您可以创建一个数组并将其分配给当前数组并只处理一个数组

【讨论】:

  • 感谢您的回复,这项工作非常完美。你的笔记很重要,因为我认为这对我来说是最好的解决方案。就像我在评论中所说的那样,我想制作一个通用的 TableView 来处理一系列“支出”。这是一个好的解决方案吗? : 在 TableViewController 中只创建一个数组(ArrayA)。当我在导航中的某处调用 TableView 时,我通过 segue 推送我想要显示的数组 (ArrayB)。当 TVC 加载时,我强制使用 ArrayA 和 ArrayB,然后使用“tableView.reloadData()”。
  • 是的,它是一个很好的通用方法,让它只有一个数组并在 segue 期间向它提供内容,然后它将加载该数据
【解决方案2】:

根据您的评论,最好的解决方案是使 TableViewControllerSpending 成为一个通用视图控制器,可以呈现提供的 Spending 对象数组。

class TableViewControllerSpending: UITableViewController, SpendingProtocol {
    var spendings = [Spending]()
}

实现所有基于spendings数组的普通表格视图方法。

在从两个按钮调用的一些适当的prepareSegue 方法中,您可以访问TableViewControllerSpending 作为目标控制器,然后根据被点击的按钮,您使用两个按钮之一设置spendings 属性您拥有的Spendings 的主要列表。

使用这种方法,您的TableViewControllerSpending 不知道有两个单独的数据列表。它只知道如何显示列表。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多