У меня есть таблица, я хочу сделать так, чтобы при нажатии на ячейку вращался индикатор активности, а не где-то в непонятном месте
Похоже на это. В коде у меня есть модуль MainViewController и модуль Presenter, который определяет, когда следует запускать индикатор активности. У меня есть розетка
@IBOutlet weak var activity: UIActivityIndicatorView! = UIActivityIndicatorView(style: .gray)
У меня есть две функции в контроллере вида, которые запускают анимацию и останавливают
func startActivity() {
activity.startAnimating()
}
func stopActivity() {
activity.stopAnimating()
}
есть функция, которая обрабатывает щелчок по ячейке
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
output.callFromThePresenter(array: array[indexPath.row])
}
Эта функция реализована в презентере.
func callFromThePresenter(array: String) {
let userInteractiveQueue = DispatchQueue.global(qos: .userInteractive)
async {
DispatchQueue.main.async {
self.view.startActivity()
}
userInteractiveQueue.async {
self.interactor.functionFromInteractor(data: array)
}
}
}
как я и предполагал, в контроллере представления при нажатии на ячейку будет работать функция callFromThePresenter (), и в ней будут запускаться функция анимации и функция передачи данных в Interactor, как только Interactor получит выполнив эту функцию, он вернет данные в Presenter, а внутри функции обратного вызова я запустите функцию stopActivity (). И это работало, пока я не решил установить позиционирование
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
output.callFromThePresenter(array: array[indexPath.row])
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryView = self.activity
}
как только я добавил эти две строки
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryView = self.activity
Я сломал все, как будто я запустил, я нажимаю на ячейку таблицы и колесо поворачивается туда, где это необходимо, и все работает, но после получения результата я снова ткну в какую-то ячейку, вся программа зависает, и Я не знаю по какой причине. В то же время функции работают, насколько я могу понять, потому что до консоли доходит, что функция была запущена и получил какой-то результат, но затем весь пользовательский интерфейс зависает, и я ничего не могу сделать