iOS Swift 4: более эффективно отклонить или представить ViewController - PullRequest
0 голосов
/ 03 декабря 2018

В приложении для iOS для перемещения между экранами я могу либо представить новый ViewController («двигаться вперед»), либо отклонить текущий ViewController («двигаться назад»).

В моем наивном понимании этоэто просто способ перемещения вперед и назад в стеке ViewControllers, который хранится в приложении.

У меня есть интуитивно понятное предпочтение отменить ViewController (где это возможно), а не представлять новый ViewController.Это дает мне ощущение работы с конечным набором ViewControllers, что, в свою очередь, заставляет меня чувствовать, что приложение эффективно использует память.

Скажем, я нахожусь на View A и хочу показать View B, тогда представление A приведет кстек ABA, в то время как удаление B сохранит стек в A.

Мой вопрос такой: это оправдано?Есть ли (программный) недостаток для постоянной работы, представляя новый ViewController?Является ли память неэффективной?

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

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Насколько я понимаю, если вы хотите снова показать А, то вам следует вернуться к тому экрану А, который у вас уже есть.Могут быть особые случаи, когда имеет смысл иметь несколько экземпляров A (например, подробные экраны для разных объектов), но даже тогда: что вам определенно не следует делать, это создавать бесконечный стек контроллеров представления, потому что, как вы уже предполагали:Это будет занимать много ненужной памяти.

Может быть, вам стоит взглянуть на существующие приложения или рекомендации Apple Human Interface Guidelines и попытаться лучше понять, как работает их иерархия представлений.

0 голосов
/ 03 декабря 2018

Я не уверен на 100%, правильно ли я вас понял, но мне кажется, что память неэффективна, и я не уверен, насколько это возможно.Вы хотите продолжать идти назад в основном, просто отклоняя представления, верно?

То есть, когда вы загружаете B, затем A, то вы хотите уменьшить A, чтобы снова перейти к B?Понимаю ли я это хорошо?

В этом случае представления должны были бы быть в постоянном «стеке», и я уверен, что это заставит дела идти медленнее, но более импульсивно, с точки зрения пользователя и опыта пользователя, что-то, чтоони вообще не используются: /

...