Swift: Могу ли я загрузить данные Url в ячейку коллекции / представления таблицы? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть горизонтальное представление с прокруткой внутри ячейки UITableView, и я получаю такое же представление, как у Netflix.

В настоящее время я загружаю данные URL в свой контроллер представления, содержащий представление таблицы, и передаюмассив данных в UITableViewCell, который содержит collectionView, а затем отображает ячейки представления коллекции.

Но я чувствую нехватку элементов управления, использующих этот метод.Например, управление пользовательским интерфейсом, скрытие, отображение представлений в зависимости от загрузки и ошибки данных URL и т. Д.

Я пытался загрузить данные URL в ячейку табличного представления, и это прекрасно работает для меня, но я этого не делаюдумаю, что это уместно, поскольку только контроллеры должны контролировать все.

Закрытие, которое я использую для загрузки данных в мой контроллер, -

private func fetchData() {
    let id = UserDefaults.standard.getUserId()
    Service.shared.fetch(userId: id) { (data, error) in
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.5, execute: {
            guard error == nil else {
                print(error?.localizedDescription ?? "Error")
                return
            }
            let result = data?.count != 0 ? "Success" : "Failure"

            switch result {
            case ResultType.Failure.rawValue:
                print("Failure")
            case ResultType.Success.rawValue:
                if let data = data {
                    self.data = data
                }
            default: break
            }
        })
    }
}

Назад кВопрос: нормально ли загружать данные внутри UITableViewCell, чтобы скрывать / показывать или анимировать UICollectionView внутри этого UITableViewCell?

Кроме того, предположим сценарий, в котором мне нужно загрузить 4-5 данных URL и выполнить рендеринг.их в каждой ячейке пользовательского табличного представления, которая может содержать или не содержать представление коллекции.

Сложно!

1 Ответ

0 голосов
/ 01 февраля 2019

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

Я предлагаю извлечь загрузку данных в пользовательский класс и использовать этот класс в контроллере представления.Таким образом, загрузка данных отключается от контроллера и представления, обеспечивая максимальную гибкость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...