通过Url Scheme重新打开iOS应用程序 - 状态保存

时间:2013-04-12 14:05:56

标签: ios objective-c

我将用户从我的应用发送到浏览器,然后通过我的自定义网址将其返回到应用。问题是:一旦我返回,我的所有实例变量都是空的!接口被保留(正如我使用Storyboard时预期的那样),但是(文本字段,实例变量等)的值是不可访问的......它们返回null。

发生了什么事?

2 个答案:

答案 0 :(得分:7)

(自从我遇到这个问题以来已经有一段时间了,但这就是我认为发生的事情......)

在我的app delegate的openURL方法中处理返回网址的调用时,我试图通过创建该方法的实例来调用我的视图控制器的方法。 ; s视图控制器。由于我没有访问当前实例,因此我基本上创建了该视图控制器的空白第二个实例。

在这种情况下,我最终使用NSNotification而不是直接调用该方法。我绝对认为这是最优雅的解决方案。

但回想起来我也可以做的是访问视图控制器的当前实例,它也恰好是根视图控制器使用:

UIViewController *controller = self.window.rootViewController;

答案 1 :(得分:1)

来自app委托中的调用的响应最好不要求任何特定的视图控制器,以下之一应该优先用于修改数据 -

1.Blocks

2.NSUserDefaults或CoreData数据库

3.Notifications

4.Shared Singleton实例