如何在不同的iOS视图之间共享控制器

新西兰詹姆斯

我来自C#wpf背景,您可以使用一个ViewModel处理多个视图。这是在不相关视图之间共享数据的好方法。但是我无法弄清楚如何在iOS中执行相同的操作,因为您似乎需要为每个视图使用一个Controller。

我要实现的目标是有一个注册序列,其中用户一个接一个地填充5个数据屏幕。我打算为此使用PageViewController,每次单击Next会将它们转移到序列中的下一页。一直以来,将所有输入数据添加到一个父模型对象(在所有五个屏幕中都存在),最后,您可以将全部提交到数据库以进行注册。

到目前为止,我唯一能看到的方法是创建五个单独的ViewController,每个注册屏幕使用一个ViewController,并创建导航逻辑以在单击时显示它们。但是,这a)似乎有些过激,b)意味着随后的每个屏幕和Viewcontroller都不知道用户在先前步骤中输入的信息。

在iOS中执行此操作的正确方法是什么?

Pawel Hryczuk

您可以通过多种方式来实现。如果您想使用UIPageViewController,实际上可以为注册过程的所有步骤使用一个视图控制器。

主视图控制器将实现协议UIPageViewControllerDataSource。它有两个必需的方法,它们返回内容视图控制器的实例。这些实例可以是任何UIViewController子类的,因此您可以具有五个单独的视图控制器类,或者可以具有同一类的五个实例。

Xcode有一个项目模板“基于页面的应用程序”。对于您来说,这可能是一个很好的示例代码。有一个类DataViewController,它为每个页面实例化。如果您的情况确实很简单,那么这可能是最好的解决方案。

如果使用多个视图控制器,则可以通过重写prepareForSegue(segue:sender :)方法在它们之间传递数据。UIStoryboardSegue对象有权访问目标视图控制器,您可以对其进行强制转换并设置属性。(我假设您正在使用情节提要和剧集。)

另一种方法是不使用UIPageViewController并在一个视图控制器中实现整个过程。可能有一个包含五个容器子视图的视图。最初将显示第一个,然后显示第二个,依此类推。这需要在这些步骤之间进行手动导航,但具有很大的灵活性。它还与MVVM更加一致,因为ViewModel和ViewController之间存在一对一的映射。

通常,iOS应用程序具有很多视图控制器。对于您而言,使用5个对我来说似乎并不过分。它可能是更多的代码,但复杂度却更低。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在视图控制器之间共享模型对象?

来自分类Dev

不同视图控制器上的iOS共享命令视图

来自分类Dev

在不同的视图控制器/表视图控制器之间导航时,如何在UIView上保存UISwitches的状态?

来自分类Dev

如何在未通过Segue直接连接的视图控制器之间共享数据

来自分类Dev

如何在多个不同的控制器之间共享$ scope功能?

来自分类Dev

如何在不同的视图控制器之间更改相同的值?

来自分类Dev

如何在Swift中的不同视图控制器之间正确实现协议和委托?

来自分类Dev

如何在不同情节提要板上的视图控制器之间传递数据?

来自分类Dev

如何在控制器之间共享功能?

来自分类Dev

Angular-如何在模块之间共享控制器?

来自分类Dev

如何在AngularJS控制器之间正确共享数据?

来自分类Dev

如何在控制器之间共享数据?

来自分类Dev

如何在iOS SDK中使用presentViewController在视图控制器之间传递变量?

来自分类Dev

如何在视图控制器之间同步索引

来自分类Dev

如何在视图控制器之间正确选择

来自分类Dev

如何在Ionic的控制器/视图之间传递数据?

来自分类Dev

如何共享继承的控制器的视图

来自分类Dev

.NET MVC 4:如何设置在不同控制器的多个视图中共享的部分视图

来自分类Dev

iOS在视图控制器之间共享数据时出现问题

来自分类Dev

如何在视图控制器中显示不同的视图以进行调试,而不是在iOS上发布(使用情节提要)

来自分类Dev

在多个视图控制器之间共享背景图像

来自分类Dev

在不同页面的控制器之间共享数据。角度的

来自分类Dev

iOS-不同视图控制器的不同屏幕方向

来自分类Dev

如何与许多视图控制器iOS共享一个阵列

来自分类Dev

如何与许多视图控制器iOS共享一个阵列

来自分类Dev

如何在swiftui中的按钮操作之间在视图控制器之间导航?

来自分类Dev

如何在laravel视图中共享来自其他控制器的数据?

来自分类Dev

如何在同一视图控制器上为不同的pickerview设置不同的数据集

来自分类Dev

如何以编程方式在不同的视图控制器之间传递字符串(快速)

Related 相关文章

  1. 1

    如何在视图控制器之间共享模型对象?

  2. 2

    不同视图控制器上的iOS共享命令视图

  3. 3

    在不同的视图控制器/表视图控制器之间导航时,如何在UIView上保存UISwitches的状态?

  4. 4

    如何在未通过Segue直接连接的视图控制器之间共享数据

  5. 5

    如何在多个不同的控制器之间共享$ scope功能?

  6. 6

    如何在不同的视图控制器之间更改相同的值?

  7. 7

    如何在Swift中的不同视图控制器之间正确实现协议和委托?

  8. 8

    如何在不同情节提要板上的视图控制器之间传递数据?

  9. 9

    如何在控制器之间共享功能?

  10. 10

    Angular-如何在模块之间共享控制器?

  11. 11

    如何在AngularJS控制器之间正确共享数据?

  12. 12

    如何在控制器之间共享数据?

  13. 13

    如何在iOS SDK中使用presentViewController在视图控制器之间传递变量?

  14. 14

    如何在视图控制器之间同步索引

  15. 15

    如何在视图控制器之间正确选择

  16. 16

    如何在Ionic的控制器/视图之间传递数据?

  17. 17

    如何共享继承的控制器的视图

  18. 18

    .NET MVC 4:如何设置在不同控制器的多个视图中共享的部分视图

  19. 19

    iOS在视图控制器之间共享数据时出现问题

  20. 20

    如何在视图控制器中显示不同的视图以进行调试,而不是在iOS上发布(使用情节提要)

  21. 21

    在多个视图控制器之间共享背景图像

  22. 22

    在不同页面的控制器之间共享数据。角度的

  23. 23

    iOS-不同视图控制器的不同屏幕方向

  24. 24

    如何与许多视图控制器iOS共享一个阵列

  25. 25

    如何与许多视图控制器iOS共享一个阵列

  26. 26

    如何在swiftui中的按钮操作之间在视图控制器之间导航?

  27. 27

    如何在laravel视图中共享来自其他控制器的数据?

  28. 28

    如何在同一视图控制器上为不同的pickerview设置不同的数据集

  29. 29

    如何以编程方式在不同的视图控制器之间传递字符串(快速)

热门标签

归档