【问题标题】:Need advice on implementing multiple (similar) Scenes for an iOS app需要有关为 iOS 应用程序实现多个(相似)场景的建议
【发布时间】:2014-04-28 00:18:41
【问题描述】:

我正在开发一个具有多个功能(通过 tableview 选择)的应用程序,这些功能几乎都做同样的事情,类似的布局、类似的按钮、类似的输入字段等。但在我认为它证明自己的合理性的地方足够不同班级。每个都将显示自己的数据类型并具有不同的输入字段,但所有字段和布局看起来都相同,或者至少具有相同的主题。另外,拥有单独的类可以让我自定义每个类的布局方式和显示的数据。

我想就解决此问题的最佳方法提供一些建议。以下是我提出的想法:

想法 #1) 为每个功能创建一个场景,并为每个功能创建一个单独的转场(总共可能是 10-20 个场景)。将创建一个 BaseViewController,并为每个函数创建一个 ViewController 类,该类将继承 BaseViewController 以进行某些代码重用。

想法 #2) 与想法 #2 类似,将为每个函数创建一个 BaseViewController 和类。但是,Storyboard 中的每个功能都没有一个场景,而是只有一个场景和一个场景到该场景的 Segue。在加载场景之前,场景的类将设置为所选函数的类。问题是我不知道如何做到这一点,或者如果这甚至可能,我已经四处搜索并没有找到任何示例。

我喜欢创意#2,因为我不必为每个功能都创建新场景,因此更容易创建附加功能。但正如我提到的,不确定这是否可能或是否有更好的方法。

【问题讨论】:

    标签: ios storyboard subclass segue viewcontroller


    【解决方案1】:

    您的问题标题为“重用控制器类...”,但不清楚您要重用什么:

    ...几乎都做同样的事情,类似的布局,类似的按钮, 类似的输入字段等。但在我相信的地方足够不同 为自己的班级辩护。

    然后:

    每个人都会显示自己的数据类型并有不同的输入 字段,但所有字段和布局看起来都一样,或者在 至少有相同的主题。再加上单独的课程会让我 自定义每个元素的布局方式和显示的数据。

    所以你已经排除了重用你的视图控制器类,听起来你也不能重用视图布局。

    我的建议是仔细考虑这几个视图控制器和布局的共同点。确定后,您有多种选择:

    • 为视图控制器创建一个公共基类。也许它们都使用相同的数据模型,并且它们都需要提供相同的一组方法来与模型交互。将其抽象为一个单独的视图控制器子类,然后从该基类派生您的视图控制器可能会得到回报。

    • 尝试委托。 Cocoa 和 Cocoa Touch 包含许多出色的示例,用于隔离难以在单独的对象中重用的事物。您可能可以构造一个可重用的视图控制器类,该类依赖委托来调整其行为。

    • 使用子视图控制器。如果有问题的每个场景都有一个在逻辑上与场景的其余部分分开的公共部分,您可以创建一个视图控制器来管理该部分,然后让每个场景的控制器将其合并为子视图控制器。

    • 使用 .xib 文件。如果您只想重用视图层次结构和视图定位方式,请考虑使用 .xib 文件来设置单个视图等级制度。然后,每个视图控制器都可以加载该 .xib 以创建自己的视图层次结构副本。

    另外,不要尝试重复使用不应该重复使用的东西。我们一直在阅读有关重用的好处,但只有适当地重用事物,您才能获得这些好处。与其尝试预先设计可重用部分,不如单独编写视图控制器,然后看看将代码重构为公共基类的意义所在。

    【讨论】:

    • 抱歉标题混乱,我确实更新了。
    • 感谢您的建议。我花了一些时间来弄清楚每个函数的实际不同之处,并为那些独特的部分创建了 .xib 文件。所以我实际上能够使用带有单个 segue 的单个视图控制器,但是因为视图是一个 tableview,我能够根据选择的功能轻松地将我的自定义 .xib 文件用于单元格。所以正如你所说,我不会重用我不需要的东西,只是自定义视图的独特部分。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2012-03-15
    • 2021-12-06
    • 2013-12-07
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多