【问题标题】:Remove Modal View Controller when Application becomes active应用程序激活时删除模态视图控制器
【发布时间】:2011-08-20 11:01:55
【问题描述】:

在我的应用程序中,我有一个按钮,当用户单击它时,它会弹出一个模式视图控制器,用于获取用户的位置(带有UIActivityIndicator 和图像)。当它有位置时,它会将它们发送到另一个应用程序。

这在较旧的设备上运行良好(没有多任务处理),因为在我返回应用程序后,该应用程序只是重新启动回到它之前的状态。

但是在具有多任务处理的设备上,当我恢复应用程序时,告诉用户它正在获取他们的位置的视图仍然存在 - 这根本不需要。

我的第一个想法是在将它们触发到另一个应用程序时设置一个 BOOL,然后在 viewDidAppear 中,如果 BOOL 为真,则关闭模式视图。

如果在应用程序恢复活动时调用viewDidAppear,这将起作用。正如我刚刚了解到的那样,它没有。

当应用程序恢复到该视图的活动时,视图控制器是否可以响应方法?或者,我是否必须使用应用程序委托设置委托等?如果是这样,你能解释一下我会怎么做吗?

【问题讨论】:

    标签: iphone ios modalviewcontroller multitasking


    【解决方案1】:

    您可以在应用激活时发送通知并将其收听到您的 modalviewcontroller。我认为这是最简单的方法。

    // Into the app delegate
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"ApplicationDidBecomeActive" object:nil];
    }
    
    // Into your modal view controller register it for the given notification
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:@"ApplicationDidBecomeActive" object:nil];
    
    - (void)applicationDidBecomeActive:(NSNotification *)notification
    {
    //...
    }
    

    否则,您可以通过在 info.plist 文件中将“UIApplicationExitsOnSuspend”键设置为 YES 来禁用应用程序的后台模式。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2023-03-18
      • 2013-09-20
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多