Pull to refresh

Comments 9

обычно мы добавляем вьюхи поверх дефолтового вью, и делаем это после того, как это вью создано (viewDidLoad). В общем-то, никто не запрещает делать иначе, т.е. провайдить свою кастомную вьюху контроллеру внутри loadView().

но зачем все эти сложности с растягиванием своей вьюхи, с поддержкой UIScrollView и тд, если Apple придумал простой механизм специально для этого?

не понял вопроса, сори :) а в примере используется UICollectionView
что сделано сейчас:
friendsListView создаётся в viewDidLoad. Нужно создать инстанс, добавить его в self.view, «растянуть» от края до края

при этом:
* есть ненулевая вероятность обратиться к friendsListView до её создания, например где-то между init и viewDidLoad, вместо порождения процесса загрузки вьюхи будет падение
* образуется никому не нужный «контейнер» из пустой self.view. Это может порождать проблемы в случае, если friendsListView это UIScrollView. При глубокой вложенности таких контроллеров, система может перестать понимать, что этой UIScrollView нужно автоматически добавлять верхние/нижние инсеты для navigationBar/tabBar/etc.

Для этого был создан метод loadView.

Я обычно делаю так:
class FriendsListViewController: UIViewController {
    private var infoView: FriendsListView!

    var infoView: FriendsListView {
        return view as! FriendsListView
    }

    override func loadView() {
        view = FriendsListView()
    }
}


при этом и self.view, и self.infoView будут порождать загрузку view, не нужно никуда ничего руками добавлять и растягивать, нет проблем с перегруженностью иерархии view.
Спасибо за статью. А как вы реализуете UI который должен показываться/скрываться в зависимости от модели? Если у нас модель состоит из 100 полей (не однородных как для таблицы, а разных), то каким образом View должна обновлять представление? Строить все 100 индивидуальных компонентов (иконка, текст, кнопка или что-то еще) для 100 полей ViewModel и скрывать/показывать их в зависимости от ViewModel?
Хотел задать вопрос почему вы не пользуетесь NSNotifications и NSNotificationCenter а определяете свой протокол?
имхо, реактивное программирование более удобно и понятно в данном случае :) как вариант, можно использовать RxSwift или ReactiveCocoa вместо своей имплементации.
Sign up to leave a comment.