1

Я стараюсь придерживаться шаблона проектирования Apple MVC, где представление получает вход и передает его контроллеру. Чтобы держать контроллер тонким и чтобы он не превращался в раздутый GodClass, выполняющий всю работу, я пытаюсь создать подкласс UIView и получать вход пользователя, который должен быть передан контроллеру для обработки. Но у меня возникают проблемы с тем, как лучше всего это делать в Swift.Как избежать раздутого ViewController в MVC с Swift?

Для того, чтобы передать пользовательский ввод от представления к контроллеру, мой подкласс UIView должен будет связываться с ассоциированным ViewController, но я видел сообщения о том, как это не рекомендуется. This Q&A, например, советует, что это плохо, но предлагает подход делегата. Комментарий от того же Q & A также отмечает, что это плохо.

собственный пример компании Apple MVC не демонстрирует отдельный подкласс UIView, но использует существующий UITableView, который все закодированное в пределах родительского UIViewController, что делает его раздутым, а не тонкий контроллер.

Как лучше всего подойти к этому?

ответ

3

Я рекомендую вам прочитать документ яблока на MVC шаблон, так как я заметил, что вы на самом деле не понимают принцип шаблона: Model-View-Controller

Для того, чтобы построить более легкую ViewController, посмотреть на этот вопрос: Lighter View Controllers

Вы можете также заинтересованы в MVVM (который используется в какао & CocoaTouch для VC истончением)
взглянуть на эту статью: Introduction to MVVM

1

Ваш опыт с раздутым View Control не обязательно является ошибкой вашего недоразумения в шаблоне MVC. Разработчик IOS Илья Punchka пишет об этом в своем учебнике вывешивают о View Controller Thinning и пишет:

Много было сказано на уже эту тему, еще больше будет сказано в будущем причины, к сожалению, нет серебряной пули и вид контроллера все еще остаются массивными во многих проектах. Недавно Энди Матушак представил Let's Play: Refactor the Mega Controller! сеанс живой кодировки на эту тему. Таким образом, вы можете видеть, что это хорошо известная и по-прежнему актуальная проблема.

Ситуация с образцом кода Apple не подтверждается ситуацией, которая также демонстрирует массивный синдром контроля зрителей! Просмотрите приведенные выше ссылки (хотя первый - в Swift 2.0, и у меня были проблемы с обновлением его зависимостей до Swift 3.0), они оба дают полезный надзор над некоторыми идеями по этому вопросу.

+0

На самом деле, чем дальше я узнаю, как кодировать iOS и Swift, тем больше я отчаиваюсь от того количества, которое раскрывается, чтобы учиться, когда вы проходите каждый новый горизонт ....! –

Смежные вопросы