我什么时候应该在同一个视图控制器中创建新视图,什么时候应该创建新视图控制器?
3 回答
以下更多的是指导方针而不是规则。
当你想根据一些参数模块化你的代码时,你需要创建一个新的视图控制器(我是根据功能来做的)。例如。DashboardViewController
等SettingsViewController
。
在 aDashboardViewController
中,我们可以进行很多事情。其中每一个都可能需要一个view
来表示。
这是一个笼统的问题,不知道您要做什么很难告诉您如何创建应用程序。顺便说一下,一个小(和简单)的解释可以是这样的。
控制器必须实现应用程序的逻辑,它们必须“控制”应用程序的特定功能。视图必须显示控制器想要向用户显示的内容。
因此,如果您想创建具有某种逻辑(用户检查/数据加载等)的东西,您必须创建一个控制器,如果您想向用户展示一些东西,您可以创建一个视图。
1 个或 2 个控制器之间的区别取决于您的应用程序,您必须创建一种单一的逻辑使用 1,否则如果您有一个具有不同功能的大型应用程序,则创建 N 个控制器。
我认为这比客观更主观。在我拥有的一个项目中,每当我需要更改选项卡式导航时,都需要创建一个新控制器,否则我最终会在定义选项卡的 onInit 方法中遇到一堆 if/else。
在其他情况下,它可能就像问自己是否是一个逻辑分组一样简单。例如,我有一个管理添加/编辑/删除用户的 UserController。我应该使用该控制器进行登录/注销/忘记密码,还是应该创建一个 AuthController?就个人而言,我会将它与 AuthController 分开,因为 UserController 的安全性应该是管理员,而 AuthController 允许任何人尝试登录。然后,当用户登录时,您是否为他们的个人资料执行 UserController 或创建 ProfileController 因为再次存在权限差异。任何登录的用户都可以管理他们自己的个人资料,但这并不意味着他们应该可以访问我的 UserController。
但是,您可以将 add/edit/delete/profile/login/logout/forgotPassword 视图放入单个控制器中,并按每个视图处理权限,这不会是“错误的”。只要您将业务逻辑保留在模型中和控制器之外,并将尽可能多的逻辑保留在您的视图之外......那么您就已经领先于曲线并在需要时进行重构不应该太难了。
如果您发现自己在 onInit 中根据正在加载的方法进行初始化时做了很多 if/else 操作……这对我来说是一个信号,表明您可能应该考虑创建一个单独的控制器。