Проблема с сохранением данных

swift

#1

Всем привет! Приложение заметок, связанное с Firebase. При нажатии на заметку должен открываться VC с подробной информацией(Название, Описание) . И если пользователь захочет изменить данные о заметке должны редактироваться (перезаписываться в БД Firebase).

Теперь такая проблема, у меня класс ячейки (аутлеты) записан в одном файле, во втором идентификатор VC, и я не знаю как добраться до этих аутлетов из другого файла. До этого использовал функцию CellForRowAtIndexPath, но сейчас нужно добраться до аутлетов в Action кнопке, чтобы сохранить данные


#2

Не претендую на абсолютную правильность )))

  • Аутлеты должы быть в том контроллере который присвоен в борде
  • Если вы настраиваете ячейку через класс UITableViewCell, то можно сделать через функцию в классе UITableViewCell:
  1. все аутлеты для ячейки в классе UITableViewCell

  2. в классе UITableViewCell создаёте функцию, которая принимает ваши данные, чаще это экземпляр класса

    func configureCell (data: YourClass) {
    // здесь и пишете всю логику работы с аутлетами и прочее
    }
    
  3. чтобы передать сюда данные в классе tableViewControllera в методе cellForRowAt пишите что-то типа:

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! YourTableViewCell // создаём cell
         let dataForCell = yourArray[indexPath.row] // хватаем нужный элемент из массива данных
         cell.configureCell(data: dataForCell)    //передаём  в функцию в  `UITableViewCell`
         return cell // всё работает :)
     }

#3

часто встречал метод configure(...), потому что init - на конструктор похоже.


#4

ну да, давайте изменим название ))


#5

Мне нужно при нажатии на кнопку в Action сохранить данные, как это сделать? Исходя из первого скрина моего


#6
  1. исходя из первого скрина как вы хотите работать с indexpath в экшене кнопки в навигейшене?
    повторите раздел с функциями, чтобы понимать что такое входящие параметры.
  2. настраиваетйе ячейку в cellForRowAt

#7

Ок, а у тебя идеи какие есть? Какие сайты и примеры ты посмотрел чтобы решить данную задачу? ну например, вот я тут, тут и тут посмотрел и не понял как вот сделать такую-то штуку. Делаю такую-то функцию, а она не пашет и в консоль выводит вот такой-то текст. Что может быть не так?


#8

Народ конечно классный: кидают свою какую-то домашку - сделайте мне… Мало того заметки, так ещё и с firebase… А вы дальше то что хотите, если не понимаете базовые вещи языка? Вы кого хотите обмануть? Вам дальше ещё сложнее будет, чем понять откуда приходит indexpath )) Изучайте синтаксис языка, потом постепенно всё само на места встанет


#9

Хорошо, спасибо. Можете сказать, в целом код сохранения в Action правильный?


#10

нет. в вашей кнопке нельзя работать с индепас.
ячейка настраивается в cellForRowAt или в отдельном контроллере UITableViewCell


#11

Это начало. :slight_smile: Скоро будут кидать тестовые задания. :))))


#12

Я разве просил сделать мне проект? Все, что я спросил, так это правильно ли выстроена логика Action, а вы непонятно во что это вылили. Да, возможно, я не понимаю многих базовых вещей, но это не дает права так разговаривать. Все приложение, я ведь сам написал и более менее понимаю


#13

Идеи которые были, видны на скрине


#14

Так, подожди, а как надо разговаривать? Тебе явно указали на твои недостатки. Никто не оскорблял и не переходил на личности. Что не так?

Тут уже 3 день подряд поднимают тему “как из ячейки получить доступ к контроллеру” для передачи данных, action дернуть итп. Хотя если не ошибаюсь, эта тема разобрана в курсах swiftbook.

Но, ок, твои замечания учту.


#15

Мне нужно сохранить изменения в бд Firebase, у меня передаются данные


#16

Я не стал весь листинг отправлять, потому что нужно, чтобы при нажатии на кнопку сохранения можно было сохранять уже имеющиеся данные по новому(редактировать)