ios - 多维数组转表

标签 ios swift uitableview multidimensional-array

我有一堆数组:

let CNSNRT = ["CNS", "NRT", 3637, 2113] as [Any]
let ADKANC = ["ADK", "ANC", 1192, 2200] as [Any]
let LAXMCE = ["LAX", "MCE", 259 , 2370] as [Any]
let ANCMCG = ["ANC", "MCG", 219, 2440] as [Any]
let ATLGLH = ["ATL", "GLH", 378, 2590] as [Any]
let CNSHKG = ["CNS", "HKG", 3450, 2728] as [Any]
let AKPFAI = ["AKP", "FAI", 253, 2960] as [Any]
let ADLKUL = ["ADL", "KUL", 3524, 2984] as [Any]

合并:

let routesArray = [CNSNRT, ADKANC, LAXMCE, ANCMCG, ATLGLH, CNSHKG, AKPFAI, ADLKUL]

使用 print(routesArray[0]) 我得到 ["CNS", "NRT", 3637, 2113] 并使用 print(routesArray[0 ][0] 我得到了 CNS,所以一切似乎都在正确引用。

但是,我无法弄清楚如何将它正确地放入 UITableView 中。基本上,routesArray 中的每个项目都应该是一个单元格,数组中的项目将定义单元格中的标签。

当前代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource {

@IBOutlet weak var routesTableView: UITableView!


func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return routesArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = routesTableView.dequeueReusableCell(withIdentifier: "cellReuseIdentifier")!

    let text = "\(routesArray[indexPath.row])"

    cell.textLabel?.text = text

    return cell
}


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

routesTableView.dataSource = self


}

生成一个表格,其中的行看起来像 ["CNS", "NRT", 3637, 2113] 但我无法弄清楚如何将它们分解以将它们应用于特定标签细胞。因此,例如 originLabel 应该显示 CNS 但在下一个单元格中,originLabel 应该显示 ADK

最佳答案

此时您访问给定的数组并使用以下方法将其转换为单个字符串:

let text = "\(routesArray[indexPath.row])"

由于您只需要单元格的 originLabel 中错误的第一个元素,因此您需要获取第一个元素。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = routesTableView.dequeueReusableCell(withIdentifier: "cellReuseIdentifier")!

    let rowData = routesArray[indexPath.row]
    if let firstStr = rowData.first as? String {
        cell.originLabel = firstStr
    }

    return cell
}

仅供引用 - 您不应该强制展开对 dequeueReusableCell 的调用。它可以返回 nil 并且您的应用程序将崩溃。

关于ios - 多维数组转表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662363/

相关文章:

ios - UITableViewCell 内容在单独重新加载单元格时闪烁

ios - 在 Admob 横幅上显示 UIButton?

应用程序在后台启动位置监控时,iOS 位置更新不频繁

ios - 使用 StoreKit 的未记录的 NSURLErrorDomain 错误代码(-1001、-1003 和 -1004)

ios - 更改 cellForRowAtIndexPath 中的 NSLayoutConstraint 常量不断导致 "unable to satisfy constraints"错误

ios - 未在所有 uitableviewcells 上绘制线

ios - 如何在 Objective-C 中返回一个函数

ios - Swift 获取字符串中最后一次出现字符后的子字符串

ios - Firebase 存储中的文件夹不会被删除?

Swift - 如何在一群人之间平均分配一笔钱?