Для передачи значений в массив из другого View Controller (VC) в Swift есть несколько способов. Рассмотрим два наиболее распространенных подхода.
1. Использование делегатов:
- Создайте протокол, определяющий метод для передачи значений в массив. Например:
protocol ArrayDataDelegate: AnyObject { func addDataToArray(data: Any) }
- В классе, из которого вы хотите передать значение, объявите слабую ссылку на экземпляр делегата:
weak var delegate: ArrayDataDelegate?
- В момент перехода на другой VC, установите текущий VC в качестве делегата:
destinationVC.delegate = self
- В методе делегата передайте значение в массив:
func addDataToArray(data: Any) { myArray.append(data) }
- В другом VC вызовите метод делегата для передачи значения:
delegate?.addDataToArray(data: someData)
2. Использование замыканий (closures):
- В классе, из которого вы хотите передать значение, объявите замыкание, принимающее значение и добавляющее его в массив:
var addDataToArrayClosure: ((Any) -> Void)?
- В момент перехода на другой VC, установите замыкание:
destinationVC.addDataToArrayClosure = { [weak self] data in self?.myArray.append(data) }
- В другом VC вызовите замыкание для передачи значения:
addDataToArrayClosure?(someData)
Оба эти способа позволят вам передать значения в массив из другого VC. Выбор между ними зависит от предпочтений и архитектуры вашего приложения. Если у вас есть другие требования или ограничения, объясните их, и я смогу уточнить ответ.