【问题标题】:Loop array data rows by row in table在表格中逐行循环数组数据
【发布时间】:2016-05-02 10:44:28
【问题描述】:

我有两个数组。

var TableData:Array< String > = Array < String >() var TableSpeed:Array< String > = Array < String >()

涉及到每个数组名称、标题、地址和年龄。
我想逐行显示这四个数据。
我目前的问题是每个数据都出现在每一行中。
"Name" 显示在第一行。
"Title" 数据显示在第二行。

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let packCellToReturn = tableView.dequeueReusableCellWithIdentifier("packCell", forIndexPath: indexPath) as! PackTableViewCell

    switch (packSegmentedControl.selectedSegmentIndex)
    {
    case 0:
        packCellToReturn.lblName.text = TableData[indexPath.row]
        packCellToReturn.lblTitle.text = TableData[indexPath.row]
        packCellToReturn.lblAddress.text = TableData[indexPath.row]
        packCellToReturn.lblAge.text = TableData[indexPath.row]

        break
    case 1:
        packCellToReturn.lblName.text = TableSpeed[indexPath.row]
        packCellToReturn.lblTitle.text = TableSpeed[indexPath.row]
        packCellToReturn.lblAddress.text = TableSpeed[indexPath.row]
        packCellToReturn.lblAge.text = TableSpeed[indexPath.row]
        break
    default:
        break

    }

    return packCellToReturn


}

【问题讨论】:

  • 1:请简单地使用var TableData = [String]() 而不是var TableData:Array&lt; String &gt; = Array &lt; String &gt;() 2:请使用驼峰式变量名:tableData 3:您确实意识到您的代码总是分配 所有 4 个标签都具有相同的 值!? 4:不要将数据拆分到多个数组中,创建一个结构或类,将 one 对象的所有值保存在一起!您究竟想要实现什么目标以及正在发生什么?

标签: arrays swift uitableview arraylist


【解决方案1】:

我不完全确定您想要实现什么,但我认为您需要重新考虑您的数据结构。

目前,您正在使用此代码访问整个数组,这意味着 .lblName 属性以及其他三个属性都设置为整个数组。

packCellToReturn.lblName.text = TableData[indexPath.row]

我会尝试这样实现它:

struct TableData {

var name
var title
var address
var age

/*
Here you can either set up a memberwise initializer as I did below, or set default values for each variable above.
init(String: name, String: title, String: address, Int: age) {
self.name = name
self.title = title
self.address = address
self.age = age
*/
}

//Creating an array of TableData elements.
var tableData = [TableData]

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let packCellToReturn = tableView.dequeueReusableCellWithIdentifier("packCell", forIndexPath: indexPath) as! PackTableViewCell

switch (packSegmentedControl.selectedSegmentIndex)
{
case 0:
    packCellToReturn.lblName.text = tableData[indexPath.row].name
    packCellToReturn.lblTitle.text = tableData[indexPath.row].title
    packCellToReturn.lblAddress.text = tableData[indexPath.row].address
    packCellToReturn.lblAge.text = tableData[indexPath.row].age

    break

然后为 TableSpeed 结构和 TableSpeed 结构的 tableSpeed 数组创建结构等,并在 tableView func 中类似地实现它。

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 2017-07-10
    • 2013-01-26
    • 2015-07-08
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多