在一个 UIViewController 中呈现不同模式的最佳方式是什么?
What's the best way to present different modes in one UIViewController?
我需要实现一个屏幕,列出我从 API 接收到的数据。有一个 mode
导航栏按钮,可更改数据在同一屏幕(同一视图控制器)中的显示方式
在最后添加了一个gif,以便于形象化。我的概念很相似,但不需要过渡动画。
任务本身非常简单,但我无法决定处理此“模式切换”的最佳方式是什么。我想出了以下选项。
选项 1:每个模式有 2 个不同的视图控制器。 ContainerVC
保持状态,并在模式切换时更改 childVC。我认为这是数据不同时的最佳方法 - 例如在分段控制中。由于在我的例子中,两个子视图控制器中使用的数据相同,因此管理起来可能会有问题。
选项 2:每种模式我们有 2 个不同的视图(例如 tableView - mapView),我们 add/remove 这些子视图基于同一视图控制器中的选定模式.使用这种方法,我的视图控制器很容易变得庞大并且无法在心跳中维护
选项 3:与选项 2 类似,但我们 show/hide 不是 add/remove 一种观点。
我不确定是否有其他方法可以提供更简洁的方法来解决这个问题,我很乐意阅读 resources/documentation 阅读您的分享
如果只有视图的位置发生变化,您可以只更新约束。如果视图因模式而异,出于性能原因,我肯定会使用容器视图控制器而不是隐藏/显示视图。您可以将两个视图控制器(每个视图控制器管理一个单一模式的视图)存储在容器 属性 中,当模式更改时容器切换可见的 clid(删除当前 child 及其视图,然后将另一个视图控制器放入层次结构中)。我建议你只将数据存储在容器中,然后你可以将容器引用传递给 children(可能在初始化期间),这样 children 就可以通过容器访问相同的模型数据,这样可以避免重复或冲突。
否则,您也可以将单个视图控制器与模式更改时调用的方法一起使用。在该方法中,您可以简单地删除当前视图(而不仅仅是隐藏它们)并插入其他视图。
我需要实现一个屏幕,列出我从 API 接收到的数据。有一个 mode
导航栏按钮,可更改数据在同一屏幕(同一视图控制器)中的显示方式
在最后添加了一个gif,以便于形象化。我的概念很相似,但不需要过渡动画。
任务本身非常简单,但我无法决定处理此“模式切换”的最佳方式是什么。我想出了以下选项。
选项 1:每个模式有 2 个不同的视图控制器。 ContainerVC
保持状态,并在模式切换时更改 childVC。我认为这是数据不同时的最佳方法 - 例如在分段控制中。由于在我的例子中,两个子视图控制器中使用的数据相同,因此管理起来可能会有问题。
选项 2:每种模式我们有 2 个不同的视图(例如 tableView - mapView),我们 add/remove 这些子视图基于同一视图控制器中的选定模式.使用这种方法,我的视图控制器很容易变得庞大并且无法在心跳中维护
选项 3:与选项 2 类似,但我们 show/hide 不是 add/remove 一种观点。
我不确定是否有其他方法可以提供更简洁的方法来解决这个问题,我很乐意阅读 resources/documentation 阅读您的分享
如果只有视图的位置发生变化,您可以只更新约束。如果视图因模式而异,出于性能原因,我肯定会使用容器视图控制器而不是隐藏/显示视图。您可以将两个视图控制器(每个视图控制器管理一个单一模式的视图)存储在容器 属性 中,当模式更改时容器切换可见的 clid(删除当前 child 及其视图,然后将另一个视图控制器放入层次结构中)。我建议你只将数据存储在容器中,然后你可以将容器引用传递给 children(可能在初始化期间),这样 children 就可以通过容器访问相同的模型数据,这样可以避免重复或冲突。
否则,您也可以将单个视图控制器与模式更改时调用的方法一起使用。在该方法中,您可以简单地删除当前视图(而不仅仅是隐藏它们)并插入其他视图。