我想在表格视图单元格中显示数据。在第一个视图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!
}
}
答案 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
}
希望这会有所帮助。