Данные для отдельного контроллера представления не работают - PullRequest
0 голосов
/ 03 июня 2018

Итак, я пытаюсь передать данные из ячейки в другой контроллер представления, и хотя я возвращаю значение в «user3», когда пытаюсь перенести его в «user2», я не получаю никакого значения,Я пытался напечатать user2 и не получил ничего, ни ошибок.Я подозреваю, что это как-то связано с "func prepare", но я не могу понять, что.

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 голосов
/ 03 июня 2018

Я рекомендую забыть didSelectRowAt и подключить переход к ячейке прототипа в Интерфейсном Разработчике, а не к контроллеру представления.

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
        }
    }
}

Всегда получать данные из модели (массив источника данных), а неиз вида (ячейка)

...