Tableview没有显示我附加的数组,即使它们不是空的

时间:2017-06-21 00:06:41

标签: swift uitableview firebase firebase-realtime-database tableview

我的问题是:我可以从firebase加载所有内容,我可以将它附加到不同的数组。但我无法在我的tableview中显示它。当我使用section时它不起作用,但是如果我在我的一个数组中插入一个静态字符串,例如:accidentMessages:String = [" Hu"],那么Hu显然位于& #34;事故" 在控制台中,它从firebase打印出我的消息,因此必须将字符串(消息)附加到我的数组中。但出于某种原因,我无法在tableview中展示它。 以下是从firebase获取并添加到数组中的消息的控制台日志。enter image description here

消息1,应该在" help",消息2应该处于威胁状态,消息3应该是意外的。但它没有显示,它只在控制台中显示

var helpMessage: [String] = []
var threatMessage: [String] = []
var accidentMessage: [String] = ["Hu"]

var sectionMessages: [Int: [String]] = [:]
let sectionTitle = ["Help:", "Threat:", "Accident"]


sectionMessages = [0: helpMessage, 1: threatMessage, 2: accidentMessage]

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

    return (sectionMessages[section]?.count)!
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView()
    view.backgroundColor = UIColor.orange

    let image = UIImageView(image: sectionImages[section])
    image.frame = CGRect(x: 5, y: 5, width: 35, height: 35)
    view.addSubview(image)

    let label = UILabel()
    label.text = sectionTitle[section]
    label.frame = CGRect(x: 45, y: 5, width: 100, height: 35)
    view.addSubview(label)

    return view

}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 45
}

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

    if cell == nil {
        cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
    }

    cell!.textLabel?.text = sectionMessages[indexPath.section]![indexPath.row]

return cell!
}

1 个答案:

答案 0 :(得分:0)

sectionMessages包含3个数组的副本,使用这些数组在您指定值sectionMessages时具有的值。

如果您需要在初始化sectionMessages后修改这些数组,则需要直接在sectionMessages中修改它们,而不是修改原始数组。

或者你可以放弃sectionMessages,而是使用像

这样的东西
func messages(for section: Int) -> [String] {
    switch section {
    case 0: return helpMessage
    case 1: return threatMessage
    case 2: return accidentMessage
    default: return []
}