I need your help Передача данных из одного VC в другой VC без перехода

swift5

#1

Всем привет! Помогите, уже третий день в активном поиске решении своей проблемы :frowning:
Задача состоит в следующем:

  • из одного VC нужно передать данные в другой VC но при этом переход не производить.

Экшена кнопка с FirstVC
@IBAction func MDbasket(_ sender: UIButton) {
print(“Отправили в корзину”)
let storyboard = UIStoryboard(name: “Main”, bundle: nil)
guard let basketVC = storyboard.instantiateViewController(identifier: “BasketController”) as? BasketController else { return }
let item = Product(image: MDimage.image!, name: MDname.text!, discription: “nil”, price: total)
basket.append(item)
basketVC.basketTotal = self.basket
navigationController?.pushViewController(basketVC, animated: true)
dismiss(animated: true, completion: nil)
}

  • Данные второгоVC BasketController
    class BasketController: UITableViewController {
    var name = String()
    var basketTotal = Product

override func viewDidLoad() {
super.viewDidLoad()
print(“viewDidLoad Данные (basketTotal)”)
addImageToNavBar()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
print(“viewDidAppear Дssанные (basketTotal)”)
}
Когда я запускаю приложение и нажимаю на кнопку Экшен данные не переходят на BasketController :frowning: массив пустой.

Но если я в первомVC пишу вместо navigationController?.pushViewController(basketVC, animated: true)
прописываю present(basketVC, animated: true , completion: nil )
либо show(basketVC, sender: nil )
То происходит переход и данные отображаются.
А мне нужно чтобы данные перенеслись в BasketController без перехода и там сохранились.
P.S. Это будет корзина куда пользователь закидывает своими выбранными товарами на протяжении пользования приложения.

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


#2

У вас не правильное представление о передаче данных.
Для корзины, данные нужно хранить в любом хранилище, а когда вы открываете свою корзину, брать данные из хранилища и показывать их.
Хранить можно как в UserDefaults, либо использовать базу данных, либо сделать синглтон (в этом случае данные хранятся до закрытия приложения).


#3

спасибо! реализую для начала как вы подсказали через синголтон.