Pull to refresh

Comments 13

Эм… Если честно, то немного не понял какую проблему вы решили. Чем вам не понравился UINavigationController, который для этого вполне себе ок?

И зачем вам было нужно делать синглтоны для передачи данных между контролерами.
Так же мы можем без проблем передавать данные из экрана в экран и уменьшить использование singleton'ов.
Собрать переходы между экранами, изолировать контроллеры.
А singleton'ы, к примеру сервисы. Здесь мы можем передать экземпляр.
Точно так же как мы открываем сторибоард и смотрим навигацию, открываем роутер и смотрим навигацию.
Не очень понятно, почему логика роутера (логика переходов) определена вместе с контейнером для самих контроллеров. При таком подходе для каждого варианта контейнера придется создавать свой базовый роутер. Более логично смотрится вариант с отделением логики переходов от контроллеров в отдельном объекте. Конечно, тогда контроллер будет вынужден что-то знать о роутере, но это нормально: контроллер должен быть главным объектом и, соответственно, общим связующим звеном.
UFO just landed and posted this here
При таком подходе надо быть осторожным: можно получить ошибку Missing proxy for identifier UIStoryboardPlaceholder. Решения есть (например), но прежде всего надо быть внимательным, потому что используется не поведение по умолчанию, а некий недокументированный хак, который загружает view для контроллера из другого файла (xib'а).

P.S. Если это не хак, а документированное поведение, — дайте знать.
Storybords могут быть и без навигации.
        self.interactivePopGestureRecognizer.enabled = NO;

А зачем было блочить swipe-to-back?
извиняюсь, кусок скопированного кода (
А вот этот код работает в надежде, что рантайм всегда будет создавать self заранее?
UIViewController *rootViewController = [self createRootViewController];
self = [super initWithRootViewController:rootViewController];

Ну и про две буквы в префиксе своего класса уже сто раз проговорено — так нельзя, надо минимум три.
память под объект уже выделена в момент вызова, без всякой надежды
как минимум метод initRouter вызван у объекта (который и будет self) — подробнее
максимум возможного — [super initWithRootViewController:rootViewController] вернет nil и rootViewController будет уничтожен
Вопрос скорее про моветон, нежели про особенности текущей реализации рантайма.
Скажите, пожалуйста, для вас приведённый код не «пахнёт»?
нет, для меня этот кусок кода приемлемый
1) я использую возможность языка
2) мне не нужно делать лишние манипуляции с initWithRootViewController
3) метод createRootViewController использует self только для связи. Можно было сперва просто создать контроллер, потом вызвать initWithRootViewController и только потом связать, но если это делается проще, почему не использовать
4) если речь про подмену объекта в init, то сам этот момент кейс «пахнет»

это ведь не конструктор, если в пример хочется привести swift
Sign up to leave a comment.

Articles