分离视图控制器的数据不起作用

时间:2018-06-03 16:51:50

标签: swift tableview cell

所以我试图将数据从一个单元格传递到一个不同的视图控制器,而我确实在内部取回了#34; user3"当我试图把它转移到" user2"我没有任何价值。我试图打印user2并没有收到任何错误。我怀疑它与" func准备"有关。但我无法弄清楚是什么。

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCell(withIdentifier:"searchCell", for: indexPath)
    as! CustomTableViewCell
    cell.titleField?.text = posts[indexPath.row].caption
    cell.userUID?.text = posts[indexPath.row].uid
    cell.descriptionField?.text = posts[indexPath.row].description
    cell.tagsField?.text = posts[indexPath.row].tags
    let photoUrl = posts[indexPath.row].photoUrl
    let url = URL(string: photoUrl)
    cell.SearchImage.sd_setImage(with: url, placeholderImage: nil)
    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let indexPath = tableView.indexPathForSelectedRow
    let currentCell = tableView.cellForRow(at: indexPath!)! as! CustomTableViewCell
    let currentItem = currentCell.userUID!.text
    var user3: String = ""
    user3.append(currentItem!)



func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destinationViewController = segue.destination as? userViewController {
            destinationViewController.user2 = user3
        }
    }

}

1 个答案:

答案 0 :(得分:1)

我建议忘记didSelectRowAt并将segue连接到Interface Builder中的原型单元而不是视图控制器。

<击>

<击>
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let indexPath = tableView.indexPathForSelectedRow
    let currentCell = tableView.cellForRow(at: indexPath!)! as! CustomTableViewCell
    let currentItem = currentCell.userUID!.text
    var user3: String = ""
    user3.append(currentItem!)
}

<击>

然后调用prepare(for segue传递发送者参数

中的表格视图单元格
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destinationViewController = segue.destination as? userViewController,
            let cell = sender as? CustomTableViewCell,
            let indexPath =  tableView.indexPath(for: cell) {
               let currentUID = posts[indexPath.row].uid
               destinationViewController.user2 = currentUID
        }
    }
}

始终获取模型(数据源数组)中的数据,而不是视图(单元格)