У меня есть collectionView
, который я хочу reloadData()
после получения определенных данных. Проблема в том, что я не знаю, как вызвать функцию ViewController из другого файла .swift, который обрабатывает данные. Я пробовал делать:
class WebSocketLogic: WebSocketDelegate {
var viewController = ViewController()
var columns = 0
var rows = 0
...
func receiveData {
...
columns = map.count
rows = map[0].count
viewController.collectionView.reloadData()
}
}
Это дало мне Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeec870fe8)
ошибку в строке инициализации ViewController()
. Я также пробовал делать:
class ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var webSocket = WebSocketLogic(roomId: 1)
var columns = 0 {
didSet {
collectionView.reloadData()
print("columns number set to: \(columns)")
}
}
var rows = 0
override func viewDidLoad() {
super.viewDidLoad()
webSocket.setupStarScream()
columns = webSocket.columns
rows = webSocket.rows
}
}
Но по какой-то причине didSet вызывается только один раз и в самом начале. Что я могу сделать, чтобы вызвать reloadData()
в ViewController
один раз receiveData()
веселье c завершится в другом файле?