我啥时候应该在同一个视图控制器中使用多个视图?

Posted

技术标签:

【中文标题】我啥时候应该在同一个视图控制器中使用多个视图?【英文标题】:When I should use multiple view inside same view controller?我什么时候应该在同一个视图控制器中使用多个视图? 【发布时间】:2012-10-23 15:17:50 【问题描述】:

什么时候应该在同一个视图控制器中创建新视图,什么时候应该创建新视图控制器?

【问题讨论】:

【参考方案1】:

这是一个笼统的问题,不知道你要做什么很难告诉你如何创建应用程序。顺便说一下,一点(和简单)的解释可以是这样的。

控制器必须实现应用程序的逻辑,它们必须“控制”应用程序的特定功能。 视图必须显示控制器想要向用户显示的内容。

因此,如果您想创建具有某种逻辑(用户检查/数据加载等)的东西,您必须创建一个控制器,如果您想向用户展示一些东西,您可以创建一个视图。

1 或 2 个控制器之间的区别取决于您的应用程序,您必须创建一种单一的逻辑使用 1,否则如果您有一个具有不同功能的大型应用程序,则创建 N 个控制器。

【讨论】:

【参考方案2】:

以下更多的是指导方针而不是规则。

当你想根据一些参数模块化你的代码时,你需要创建一个新的视图控制器(我是根据功能来做的)。例如。 DashboardViewControllerSettingsViewController

DashboardViewController 中,我们可以进行很多事情。每个可能都需要一个view 来表示。

【讨论】:

【参考方案3】:

我认为这比客观更主观。在我拥有的一个项目中,每当我需要更改选项卡式导航时,都需要创建一个新控制器,否则我最终会在定义选项卡的 onInit 方法中遇到一堆 if/else。

在其他情况下,它可能就像问自己这是否是一个逻辑分组一样简单。例如。我有一个管理添加/编辑/删除用户的 UserController。我应该使用该控制器进行登录/注销/忘记密码,还是应该创建一个 AuthController?就个人而言,我会将它与 AuthController 分开,因为 UserController 的安全性应该是管理员,而 AuthController 允许任何人尝试登录。然后,当用户登录时,您是否为他们的个人资料执行 UserController 或创建 ProfileController 因为再次存在权限差异。任何登录的用户都可以管理自己的个人资料,但这并不意味着他们应该可以访问我的 UserController。

但是,您可以将 add/edit/delete/profile/login/logout/forgotPassword 视图放入单个控制器中,并按每个视图处理权限,这不会是“错误的”。只要您将业务逻辑保留在模型中并保留在控制器之外,并尽可能多地保留在您的视图之外......那么您已经领先于曲线并在需要时进行重构不应该太难了。

如果您发现自己在 onInit 中执行了很多 if/else 操作,您正在根据正在加载的方法进行初始化...这对我来说是一个信号,您可能应该考虑创建一个单独的控制器。

【讨论】:

以上是关于我啥时候应该在同一个视图控制器中使用多个视图?的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候应该使用“隐藏文本框”,啥时候应该使用(html 5)“数据属性”?

我啥时候应该使用 FutureBuilder?

我啥时候应该在 Symfony 4.4 控制器中使用拒绝访问功能?

添加子视图,但我啥也没看到 - iOS

我啥时候应该重新计算 UITableView 页脚的大小?

AngularJS - 类似视图 - 我应该对多个控制器使用相同的视图吗?