【问题标题】:How do I let declarations from one header file access three separate viewcontrollers?如何让一个头文件中的声明访问三个单独的视图控制器?
【发布时间】:2014-09-06 06:49:20
【问题描述】:

我正在 xCode 5 上制作一个单视图应用程序,我希望有一个设置,用户可以选择他们的汽车颜色和背景颜色。我使用 2 个视图控制器使其工作; 1 作为主菜单,1 作为选择颜色、背景和玩游戏。我很确定这对于这样的应用程序来说是不好的做法,所以我想找到一种不同的方法来做同样的事情。我有它,以便在选择汽车颜色时“隐藏”背景选择和游戏对象。然后在选择背景时,隐藏汽车颜色和游戏对象。然后在玩游戏的时候,汽车的颜色和背景都被隐藏了。我知道这是一个糟糕的结构,这就是为什么我想得到一个关于如何将相同的声明链接到 3 个单独的视图控制器的答案。或者至少是一个不那么混乱的替代方案。谢谢

【问题讨论】:

    标签: objective-c uiviewcontroller xcode5 header-files declaration


    【解决方案1】:

    解决此问题的一种方法是将此类值(属性)存储在您的 AppDelegate 类中,或者随着您的应用在自定义数据模型中增长。这样,您创建的每个类都将能够访问和更改其他类设置的值。这就像拥有一个“全局变量”。

    虽然对于较小的应用程序,但在 AppDelegate 中很容易做到这一点:

    • 在 AppDelegate.h 中为您的背景和汽车颜色创建公共属性
    • 在您的视图控制器中,导入 AppDelegate.h
    • 在您的视图控制器中,像这样创建对您应用的 AppDelegate 的引用:

      AppDelegate *myAppDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    现在您可以访问 myAppDelegate.yourProperty = xxx 并获取和设置您的值。这将获取对您当前 AppDelegate 及其所有(公共)属性的引用。

    随着您对它的深入了解以及您的应用程序规模和复杂性的增长,您将创建自己的数据模型类(或使用 Core Data)来跟踪应用程序范围内的变化。

    希望这会有所帮助!

    【讨论】:

    • 非常感谢,还有一个问题 - 我是否将“AppDelegate.h”导入到我的 viewcontroller.m 或 viewcontroller.h 文件中?
    • 进入 .h 文件。将其添加到当前 #import 语句下方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多