【问题标题】:using a BOOL from AppDelegate in my viewController在我的 viewController 中使用来自 AppDelegate 的 BOOL
【发布时间】:2012-02-21 16:07:55
【问题描述】:

我已经被困了一段时间了...我对编码不是很有经验,但我正在尝试...

在我的应用程序中,我在 AppDelegate.h 中像这样使用 BOOL backFromBack:

BOOL backFromBack;

然后当应用程序进入后台时,我在.m文件中将其设置为yes。

现在我想使用一个

if (backFromBack)

在我的 viewController 中,但是如何将这个 BOOL 从委托传递给 viewController?

任何帮助都很棒!

【问题讨论】:

    标签: xcode if-statement viewcontroller boolean


    【解决方案1】:

    在您的视图控制器中,

    #import AppDelegate.h
    

    然后你可以使用

    [(AppDelegate*)[[UIApplication sharedApplication] delegate] backFromBack]
    

    访问您的变量,假设该变量可从外部访问(即合成)

    【讨论】:

    • 好吧,我得到了它的工作,但我的事情是,当我使用 code - (void)applicationDidEnterBackground:(UIApplication *)application { backFromBack = YES; } 并在我的 viewController 中我使用 bool 来设置一些操作:code if(myAppDelegate.backFromBack) { .... } 然后这些操作不会被触发.. . 我该如何解决这个问题?
    • 您的意思是,您将应用程序置于后台模式,然后再次激活它,backFromBack 仍设置为 NO?也许您在某个激活委托函数中的某处将 backFromBack 设置为 YES?
    • 是的,我就是这个意思。但我检查了每一段代码,问题不在于它设置不正确。在 didFinishLaunchingWithOptions 中,我将其设置为 NO,然后如果我的应用程序进入后台模式,则将其设置为 YES。我已经检查过了,它设置正确。但在我的 viewController 中,它仍然没有调用 if(backFromBack)
    • 等一下,您希望在 init 或 viewDidLoad 或 viewController 中触发的代码是什么?如果是,则不必每次从后台调用这些函数,因为 iOS 会在您进入后台时保留状态。也许那是你的问题?简而言之,检查是否调用了包含您的 if 语句的函数。
    • 啊,是的,这就是问题所在。但是当我的应用来自后台时,我想在 viewController 中设置一些东西。如何在我的 AppDelegate 中访问我的 viewController 中设置的“btnStart”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多