Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITabBar最佳实践_Ios_Swift_Containers_Uitabbar - Fatal编程技术网

Ios UITabBar最佳实践

Ios UITabBar最佳实践,ios,swift,containers,uitabbar,Ios,Swift,Containers,Uitabbar,在我的应用程序中,在我的一个控制器中有一个UITabBar。在选项卡栏中选择一个项目,只会更改控制器的一部分 例如,像“配置文件”面板一样,顶部有一些固定的配置文件信息,底部有不同的设置。您可以使用选项卡栏从一个设置类别切换到另一个设置类别 我想使用容器,选项卡栏中的每个项目对应一个容器,选择一个项目将在顶部显示所选容器(或显示/隐藏方法)。但是每个容器都有一些集合视图、图像和表视图。 我关心的是记忆力 因此,我可能应该在选择选项卡栏项时实例化并销毁容器,而不要使用显示、隐藏方法 但是我如何从故

在我的应用程序中,在我的一个控制器中有一个UITabBar。在选项卡栏中选择一个项目,只会更改控制器的一部分

例如,像“配置文件”面板一样,顶部有一些固定的配置文件信息,底部有不同的设置。您可以使用选项卡栏从一个设置类别切换到另一个设置类别

我想使用容器,选项卡栏中的每个项目对应一个容器,选择一个项目将在顶部显示所选容器(或显示/隐藏方法)。但是每个容器都有一些集合视图、图像和表视图。 我关心的是记忆力

因此,我可能应该在选择选项卡栏项时实例化并销毁容器,而不要使用显示、隐藏方法


但是我如何从故事板上做到这一点呢?

这可能是通过编程实现的最简单的方法。尝试在选项卡栏中使用UINavigationController

如果您使用的是
UITabController
,那么您很大程度上是在按照它希望您的方式工作。也就是说,每个选项卡对应一个
UIViewController

但是,您可以直接使用
UITabBar
,这样您就可以访问
uitabardelegate
。在代理实现中,您可以响应
utabaritem
选择并根据需要操作
UIViewController

有一些微妙的副作用,比如: -调整
UIViewController的内容插入
-管理
uitabar的状态


但是这并没有太复杂。

为什么不使用简单的
UIDABBARCONTROLLER
本身,而不是使用容器和自己管理选项卡的切换?一次显示一个视图控制器视图的“容器”是UIPageViewController。它为您解决了内存问题。为什么不使用它?@AdilSoomro因为uitabarcontroller只有在释放内存时才会释放内存。每次取消分配容器时,我都要取消分配。@matt您认为我可以将其与UITabBarView一起使用吗?我无法知道您可以做什么。您必须编写代理代码以响应选项卡栏选择的更改,从而驱动UIPageViewController中的页面更改。你说的“从故事板上做这件事”让我觉得你可能不明白怎么做。然而,如果我想要你描述的界面,我会这么做。但我可能会使用UISegmentedControl,而不是选项卡栏;没有选项卡栏控制器的选项卡栏是不可能出现的情况。因此,您是说每次选择选项卡栏时都要覆盖控制器?不完全是,尽管您可以。您可以灵活地使用UITabBar和委托。在您的问题中,选项卡栏似乎可以用来操作UIViewController的某些部分,或者显示/隐藏控制器。至于内存使用,请衡量每种方法的影响,看看是否真的很重要。