Не злоупотребляю ли я подклассом UIViewController?

Пытаясь выяснить, почему viewWillAppear не вызывается в моем приложении, я натолкнулся на то, что может быть грубым недоразумением, которое я придерживаюсь относительно предполагаемого использования подклассов UIViewController.

Согласно следующему сообщению viewWillAppear не запускается при использовании addSubView! и ссылка на это сообщение в блоге: http: //blog.carbonfive. com / 2011/03/09 / abusing-uiviewcontrollers / Создание подкласса UIViewController должно происходить только в очень специфических ситуациях. В частности, при добавлении непосредственно в UIWindow или другие пользовательские контроллеры, созданные Apple, такие как UINavigationControllers.

Я определенно виновен в добавлении представлений подклассов UIViewController к представлениям других подклассов UIViewController.

На самом деле, я думал, что это более или менее вся идея реализации MVC Apple в целом ... Один общий VC, с другими VC внизу, все с радостью получают вызов своих методов делегата.

Если в приложении много просмотров (которые по определению требуют контроля), которые приходят и уходят, и много экранов, в модели, описанной в этом post, у каждого полного экрана должен быть один главный подкласс VC, со всеми вложенными представлениями, управляемыми вместо этого пользовательскими контроллерами (которые, как правило, управляют представлениями), которые являются подклассами простого NSObject.

В этом случае UIViewController должны быть напрямую связаны только с Window или UINavigationController, UITabBarController и т. Д.?

Вы гарантированно получите вызов методов делегата UIVC в этом случае? Чем это отличается от вызова методов делегата вручную, когда представление контроллера представления является подпредставлением другого VC?

Честно говоря, это кажется огромной тратой времени. Пользовательские реализации ViewDidLoad, viewDidLoad, viewDidUnload, viewWillAppear, viewWillDisappear, не говоря уже о таких простых вещах, как, скажем, «view» ...

В общем, либо я был полностью неправ, либо я нахожусь на дикой природе гусь погоня. Если подклассы UIViewController могут ' Можно рассчитывать на вызов viewWillAppear, почему бы просто не вызвать этот метод вручную и покончить с этим?

Зачем копировать всю предполагаемую функциональность UIViewController?

31
задан Community 23 May 2017 в 12:09
поделиться