надеюсь, кто-нибудь может помочь мне с моей проблемой. Я начинающий программист, и это мое первое серьезное приложение, которое я пытаюсь создать, поэтому, пожалуйста, поймите и не стесняйтесь указывать, если я не предоставил достаточно информации или кода.
Я пытаюсь передавать данные с помощью контроллера уведомлений между контроллерами представления. Коротко, вот как это должно работать:
После нажатия кнопки редактирования на MainV C он должен передать уведомление и go на EditV C, где эти данные должны быть получены и использованы позже. Посмотреть.
Проблема, с которой я столкнулся, заключается в том, что, кажется, EditV C не получает данные при первой загрузке, но если я go вернусь и снова нажму кнопку, это будет работать безупречно. Любое предложение, почему он не загружается в первый раз?
Я пытался переместить наблюдателя из viewDidLoad в viewDidAppear и сообщение уведомления в другой момент (стоит упомянуть: сейчас он публикуется после того, как я долго жму ячейку, что при долгом нажатии показывает дополнительные кнопки для редактирования или удаления, я выбрал этот момент, потому что я хочу использовать это уведомление для передачи всех данных из активной ячейки и использовать то же уведомление в других местах, этот конкретный c segue выполняется после нажатия кнопки редактирования), например, перемещение его в функцию editButtonPressed или подготовка для функции segue, но эффект тот же. Что мне здесь не хватает?
Вот фрагменты моего кода:
Редактировать V C
class EditVC: UITableViewController {
override func viewDidLoad() {
startObserving()
}
func startObserving() {
NotificationCenter.default.addObserver(
self,
selector: #selector(editPressedName(notification:)),
name: .editPressedName,
object: nil
)
}
@objc func editPressedName(notification: NSNotification) {
print("\(notification.userInfo) received")
MainV C Уведомление
let activeCellName:[String: Data] = ["name":item!]
print(activeCellName)
NotificationCenter.default.post(name: .editPressedName, object: nil, userInfo: activeCellName)