【问题标题】:iOS: How can I reduce Storyboard & Code duplication?iOS:如何减少情节提要和代码重复?
【发布时间】:2020-10-29 06:36:14
【问题描述】:

我目前正在开发一个有趣的日程安排应用程序,并且在该应用程序中我希望有可以加载给定日期的模板,如果有人每天做特定的事情,这将减少从头开始创建每一天。

这就是我的故事板目前在应用屏幕上的样子

我想添加一个 UIButton,它将应用程序的状态更改为“模板”模式。从那里我希望能够像我已经做的那样添加任务,并将它们保存到 JSON 文件中。用户还可以将他们的模板“导入”到当天。我知道如何做所有这些,但我很好奇的是我将如何创建这个模板“状态”。用一些重复的控制器代码创建两个重复的 Storyboard ViewController 会更有意义吗?或者这会被认为是不好的做法?如何在“模板状态”和“正常日程状态”之间切换?

模板状态的布局和正常的时间表将在完全相同的位置具有完全相同的 UI 元素。我非常想找到解决这个问题的最佳方法,无论是特定的设计模式还是类似的东西。

谢谢!

【问题讨论】:

  • 我对你的意思“导入他们的模板”有点困惑。您是否尝试创建一个在给定日期可查看的列表,然后在该列表中选择切换到“编辑模式”,然后更新当天的值?
  • @xTwisteDx 抱歉,我应该更具体一些。正常时间表上会有一个按钮将他们带到模板模式,从那里,会有一个带有一堆模板的 TableView(他们可以创建新模板,删除模板),如果他们选择一个模板,它将加载将模板转换为看起来与上面完全相同的视图。他们可以在该视图中添加、编辑和删除任务。他们可以单击模板日程表上的按钮,将日程表导入用户所在的当天。我希望这更有意义。

标签: ios swift xcode model-view-controller design-patterns


【解决方案1】:

在我看来,我会为您的“模板”创建一个单独的故事板 拥有多个故事板是不错的做法,只要它们不是多余的。

您还可以轻松地将现有情节提要与 UIButton 结合使用,该按钮将更改您的日程安排视图的“状态”。这并没有错,许多人会建议这样做。

需要注意的几点:

-将同一个故事板用于除预期目的之外的多种目的不一定是最好的方法。这可能会导致混乱,尤其是如果您不保持代码和函数的整洁。

-为此使用单独的故事板会更容易,因为每个故事板的用途很简单。您将减少困惑,并更有效地利用您的时间。但是,这意味着您必须在堆栈顶部管理一个全新的视图控制器和情节提要。这意味着更多的工作和更大的代码库。正确关闭 viewController 并管理您的堆栈是关键。

更好的方法

对于您的观点,您可以使用 XIB 文件。 一个 xib 文件将允许您轻松地重用相同的视图。动态更改内容和功能是 XIB 文件的预期目的。

这里有几个链接供您收集信息。 https://medium.com/better-programming/swift-3-creating-a-custom-view-from-a-xib-ecdfe5b3a960

https://medium.com/@tjcarney89/whats-a-xib-and-why-would-i-ever-use-one-58d608cd5e9b

https://mobilejazz.com/blog/storyboards-xibs-best-practices/

注意 使用和创建 .xib 并不是超级简单,也不是很简单。 如果您是 ios 开发的新手,我会暂时回避这个,直到您对开发更加熟悉为止。 您可能会发现自己花费更多时间进行设置,而不是使用现有的故事板或新故事板

【讨论】:

  • 非常感谢您的回答,让我明白了很多。我想我会继续创建一个新的故事板和控制器,因为正如你所说,它会导致更少的混乱和更清晰的代码。我比较新,所以根据你所说的,我想我会回避 XIB。我想一些代码重复不是问题,只要它导致更清晰的代码等?
猜你喜欢
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多