【问题标题】:iOS Pattern for Tab Bar Controller: View Controllers that share functionality标签栏控制器的 iOS 模式:共享功能的视图控制器
【发布时间】:2014-06-16 06:47:16
【问题描述】:

我正在使用 Storyboards、iOS 7 SDK、Xcode 6 Brta。

我有一个 UITabBarController。

它有两个故事板关系:

(1) 与 UINavigationController 1 的关系,其中嵌入了 View Controller 1。

(2) 与 UINavigationController 2 的关系,其中嵌入了 View Controller 2。

每个视图控制器在其每个导航栏中都有一组通用的 UI 元素。例如选项按钮、刷新按钮等。

这些按钮在每个 View Controller 中的作用是相同的,但取决于特定的 View Controller 及其 Storyboard 设置。

例如:

用户按下视图控制器 1 的 [导航栏中] 的选项按钮,将发生 Segue xx1,导致从视图控制器 1 转换到选项视图控制器。

或者...

用户按下视图控制器 2 的 [导航栏中] 的选项按钮,将发生 Segue xx2,导致从视图控制器 2 转换到选项视图控制器。

(在这种情况下,每个 View Controller 都会导致出现相同的 Options UI,但通过不同的 Segue。)

显然,这复制了功能,引入了复杂性并且没有扩大规模。

我应该如何设计/重构它,以便按下出现在 2 或 3 或 n 个视图控制器中的按钮,在每个视图控制器中具有相同的行为,但没有重复代码和情节提要纠缠?

这有典型的模式吗?干杯。

【问题讨论】:

    标签: ios objective-c design-patterns uiviewcontroller uitabbarcontroller


    【解决方案1】:

    一种选择是为 ViewController1 和 ViewController2 创建一个超类,您可以在其中实现常见行为的逻辑(例如选项按钮)并指定常见的设计元素,在这种情况下您不会有多余的代码并且您可以通过再次子类化来简单地将更多视图控制器添加到标签栏控制器。

    【讨论】:

    • 非常感谢尼古拉斯。这个建议符合要求。欢呼。
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2012-12-25
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多