Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 网间网操作系统。如何不将相同的代码放入三个执行几乎相同操作的ViewController中_Ios_Swift - Fatal编程技术网

Ios 网间网操作系统。如何不将相同的代码放入三个执行几乎相同操作的ViewController中

Ios 网间网操作系统。如何不将相同的代码放入三个执行几乎相同操作的ViewController中,ios,swift,Ios,Swift,我正在尝试创建一个非常简单的专注游戏,我有一个问题 我有一个ViewController,用户可以在这里选择难度级别(简单,普通,难)。然后,还有3个ViewController,每个ViewController都是一个新级别。游戏逻辑基本上是一样的,只有一些小事情需要改变。我可以将相同的代码复制粘贴到所有三个控制器中,这似乎不是一个好主意 我能避免这种情况吗?也许我甚至不需要3个视图控制器,但这是我有史以来的第一个应用程序,我的知识很糟糕。您可以创建协议并在视图控制器中使用这些协议 我认为您在

我正在尝试创建一个非常简单的专注游戏,我有一个问题

我有一个
ViewController
,用户可以在这里选择难度级别(简单,普通,难)。然后,还有3个
ViewController
,每个
ViewController
都是一个新级别。游戏逻辑基本上是一样的,只有一些小事情需要改变。我可以将相同的代码复制粘贴到所有三个控制器中,这似乎不是一个好主意


我能避免这种情况吗?也许我甚至不需要3个
视图控制器
,但这是我有史以来的第一个应用程序,我的知识很糟糕。

您可以创建协议并在视图控制器中使用这些协议


我认为您在这里选择了面向协议的编程,现在苹果在开发中更喜欢面向协议的编程

提示:

  • 您可以使用可在不同控制器中使用的所需方法创建协议

  • 您可以为所有3个视图控制器中常见的数据创建单独的模式

  • 甚至我建议您使用一些架构,比如MVVM/VIP+coordinator,这在这里很有用(如果您是初学者,这是可选的)

好处:

  • 您的代码将被管理
  • 您将学习面向协议编程的一个非常方便的概念
  • 如果您有时间并且想探索不同的体系结构,那么使用MVVM真的很好

在common viewController类中创建一个枚举,并根据需要传递该枚举值,您可以根据common viewController中的该枚举值更改代码

    enum GameLevel {
      case easy, normal, hard
    }

经典问题。复制与重用之间的斗争。这取决于您,开发人员,来决定什么感觉最好(这里没有适合所有人的解决方案)。您可以将1 VC与不同的模式/状态一起使用,并添加适当的if/else检查。但是做得太多,你就创造了一个神的对象。其他选择是使用一个基本VC(它们都是从中继承的),并只在其中放入共享代码。再次引导你走向一个神的对象。最后,使用VIPER或MVVM之类的抽象级别,只向电视提供基本数据(ViewItems或Entities)。创建基本的viewController类,并从中派生vc类,在需要时覆盖方法。如果显示实际代码,则更容易提供帮助。可以使用MVVM模式。创建视图模型可以提高可恢复性