одна из недостающих частей не использует основной поток.Когда вы используете reloadData из collectionView, используйте с основным потоком.
DispatchQueue.main.async { [weak self] in
self.collectionView.reloadData()
}
И еще, если вы хотите что-то обработать в обратном контроллере, я бы рекомендовал вам использовать Protocol / Delegates.
Опишите протокол
protocol Handler:class{
func reloadHandler()
}
Затем увеличьте его с помощью MainController
.После расширения используйте свою собственную функцию перезагрузки в функции протокола.
extension MainController: Handler{
func reloadHandler() {
self.reload()
}
}
Затем делегируйте протокол в target ViewController
class TargetController: UIViewController {
weak var delegate: Handler?
}
Перед нажатием targetController вы должны присвоить self делегату.TargetController.
var target = TargetController()
target.delegate = self
Вы устанавливаете делегирование между двумя контроллерами.Пришло время запустить ваше действие.В целевом контроллере, когда вы запускаете reload()
, используйте delegate?.reloadHandler()
.