Редактировать ячейку таблицы в другом контроллере


#1

Есть 2 контроллера, TableViewController и ViewController, из первого контроллера (TableViewController) можно перейти во второй (ViewController) и добавить текст, который обратно отобразится в таблице
А как сделать так, что бы при нажатии на уже добавленное поле переходить во второй контроллер и там вносить изменения?

Точнее больше интересует как перейти во второй контроллер, передав туда данные ячейки, остально в целом понятно

Заранее спасибо)


#2

Так это же простая передача данных между контроллерами.
Если работаете с сегвеями, то просто обращаетесь ко второму конроллеру в методе первого контроллера так:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "yourSegueIdentifier" {
            guard let indexPath = tableView.indexPathForSelectedRow {
                let dvc = segue.destination as! YourViewController
                dvc.yourText = self.yourDataArray[indexPath.row]
            }
        }
    }

#3

А как сделать это программно без использования сегвеев? Все видео где посмотрел о передаче данных с ячейки на след контроллер объясняют через сегвей. Благодарен если отправите ссылку где почитать или посмотреть о других способах


#4

Все аналогично с сегвеями.
Перед пушем контроллера, передаете в него данные.

let secondViewController = SecondViewController()
secondViewController.data = ...
self.navigationController?.push(secondViewController)

#5

Мне не понятен вот какой момент. Я могу создать кнопку и перейти по ней чтобы редактировать ячейки, но не понятно как написать код чтобы редактирование ячейки происходило именно по нажатию на неё. С сегвеем понятно, потому что через сториборд делается связь между контроллерами. А вот через код я чего-то поплыл совсем. Понимаю что наверное просто делается…


#6

Нажатие на ячейку tableView(didSelectRowAt) метод делегата.
Из него уже получаете индекс ячейки, а дальше все что вам нужно.


#7

(upload://qzAGsGFP8hveqx0hBFbbJfbMbNE.jpeg) Спасибо, с передачей в контроллер справился благодаря вам, но возникла другая странная проблема. Когда отредактировал данные в ячейке и хочу их сохранить, то нажимаю на кнопку save, и по логике кнопки меня должно возвратить на предыдущий контроллер где я увижу мою отредактированную ячейку, но изменений не происходит, краша нет, но ячейка без изменений. НО самое главное, пользуясь той же кнопкой save когда я хочу не отредактировать данные, а просто создать новую ячейку с данными, то все прекрасно добавляется на предыдущий контроллер. Ниже код кнопки. С сегвеями наверное бы сделал уже но поставил себе задачу не использовать их в этом тренировочном приложении%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5|690x431


#8

Здравствуйте, если решили эту задачу, можете поделиться как? Буду очень благодарен