为本质上做同样事情的不同选项卡创建独特的视图控制器是不好的做法吗?

Posted

技术标签:

【中文标题】为本质上做同样事情的不同选项卡创建独特的视图控制器是不好的做法吗?【英文标题】:Is it bad practice to create unique view controllers for different tabs that do essentially the same thing? 【发布时间】:2010-06-21 18:51:01 【问题描述】:

好吧,基本上我有一个 UITabBarController 作为我的根视图控制器。我有三个选项卡,它们都嵌套了 UINavigationController 对象,每个选项卡控制三个表视图。

每种模式都将以相同的方式访问同一个数据库,但只是按不同的变量排序。与 iPod 应用程序的工作方式非常相似 - 无论您是按艺术家还是流派缩小搜索范围,您最终都会看到相同的“详细视图”(正在播放的歌曲)。

我的问题是,我是否应该将 Interface Builder 中的所有三个选项卡都链接到同一个 UINavigationController,而只是根据所选选项卡填充表格?还是应该为每个选项卡创建完全独立的对象,然后复制和粘贴代码?

第一种方式似乎更高效灵活,但第二种方式似乎更明确和易于阅读!

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

我认为清除每个选项卡开关上的导航控制器堆栈(假设在显示非最上面的导航子项时它没有隐藏)比让所有三个/四个 UINavigationControllers 始终可用更消耗资源(主要用于快速切换标签)。

此外,如果拥有 UINavigationController 是唯一在堆栈上保留(拥有)UIViewControllers 的对象,那么如果您决定重置导航堆栈(1-Nav 场景),您还将释放您的 UIViewControllers )。 当然假设它们不是“静态”存在于 NIB 中

TL;DR 版本

我会为每个标签使用单独的UINavigationController,在低内存占用的应用程序中,它会提高标签的视觉性能。

【讨论】:

以上是关于为本质上做同样事情的不同选项卡创建独特的视图控制器是不好的做法吗?的主要内容,如果未能解决你的问题,请参考以下文章

在切换到 UITabbarController 中的不同选项卡之前关闭当前选项卡上的推送视图控制器

TabBarController 旋转问题

在不同的选项卡中弹出视图控制器

使用选项卡视图控制器演练

在 ViewController 中创建选项卡视图的最佳方法是啥

如何从导航控制器切换到选项卡控制器并使其成为根视图控制器