如何使用Xcode在ios的tableview中的表格单元格中显示数据

时间:2018-02-08 06:11:57

标签: ios iphone xcode uitableview

我想在表格视图单元格中显示数据。在第一个视图Controller中,我显示了一个视图控制器,然后用户选择了联系人。选定的联系人以表格形式显示以及金钱。所以这些联系人的姓名和金钱传递给下一个控制器在Next控制器中,我获取了表视图和表格单元格。但我的问题是控制台中显示的所选联系人和金钱,但数据未附加到单元格。我尝试了很多,但它没有在单元格中显示数据。我的nextController是:

import UIKit
import Contacts
class ContactViewController:UITableViewCell {

    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var amount: UILabel!
}

class Contacts:UIViewController,UITableViewDataSource,UITableViewDelegate {
    var b:[String] = []
    var c:[String] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource=self
        tableView.delegate=self
        print("money for each contact\(c)")

    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Contacts", for: indexPath)as! ContactViewController
        let con = b[indexPath.row]
        cell.name.text = con
        cell.amount.text=c[indexPath.row]
        return cell
    }


    @IBOutlet weak var tableView: UITableView!

}
}

2 个答案:

答案 0 :(得分:0)

使用元组数组存储联系人和资金:

var data: [(contact: String, money: String)]

在向tableView.reloadData()分配新数据后添加data

var data: [(contact: String, money: String)] {
    didSet {
        tableView.reloadData()
    }
}

如果数据在prepare(for segue: sender:)中分配而不是在tableView.reloadData()中添加viewWillAppear(_ animated: Bool)

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    tableView.reloadData()
}

答案 1 :(得分:0)

首先检查"联系人"是Storyboard的单元格标识符。您需要在单元类上添加init方法。

class ContactViewController:UITableViewCell {

    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var amount: UILabel!

init(style: UITableViewCellStyle, reuseIdentifier: String) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

}

另一个,您需要添加heightForRowAtIndexPath委托方法并返回单元格的高度。

 func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
      return 44 // OR UITableViewAutomaticDimension
}

希望这会有所帮助。