2012-01-29 88 views
0

我有一个简单的iPad应用程序,有5个视图。在第一个视图中,用户被要求做出选择并设置一些选项。从这些信息中,其他4个视图在NSNotification消息发送给它们之后以编程方式更改。 (即控制被添加,更新)。在应用程序启动时在后台加载UIViews

我的问题是,当应用程序第一次加载时,用户看到View1,但View2,View3,View4和View5从来没有打开过,所以我编程方式对这些视图做任何更改都没有完成,当用户第一次导航到它们(通过标签栏),不会显示更改。

[编辑:我应该指出,对每个视图进行更改的代码包含在ViewController本身内,并在视图观察传入的NSNotification时执行。当视图未加载时,可以理解的是从未收到传入的NSNotification。]

只有在用户至少查看一次这些屏幕中的任意一个,然后返回到View1并进行更改之后,其他Views才能正确更新。

我想我可以通过在应用程序启动时主动将视图2,3,4和5加载到内存中来解决此问题,以便他们可以立即开始接收通知。

有没有一种简单的方法可以在iOS 5中执行此操作?

+0

当其他视图被实例化并加载之后,在它们出现在屏幕上之前,他们是不是可以从根视图(或视图1)中获取选择和选项更改,然后执行所需的任何自定义做? – 2012-01-29 14:10:51

+0

好点。我可能应该更多地解释应用程序 - 它是一个MIDI设备的控制器,所以当用户在第一个屏幕上设置参数时,应用程序开始一些MIDI对话,导致其他视图更新为“真实时间'。由于性能原因,MIDI对话也发生在不同的线程上。如果其他视图可以在用户选择第一个视图上的选项时立即开始更新/整理,那将会很方便。 – CyberFerret 2012-01-29 15:56:45

回答

0

为什么视图会立即改变?

当用户回答第一个视图的问题时,我将存储所需更改的指示符,然后在需要更改的每个视图的-viewDidLoad上应用更改。

+0

感谢您的回答Hezi。我在上面进一步解释说,该应用程序是一个MIDI控制器,并在第一个视图上设置选项将启动几个MIDI对话来更新其他视图。例如,当用户转到第二个视图时,他应该看到从MIDI设备获取的大约20个音频IR设置。目前,他只能看到默认设置,直到他离开该屏幕,重新选择第一个屏幕上的选项,然后返回到第二个屏幕。 – CyberFerret 2012-01-29 16:01:27

0

与其试图将视图加载到内存中,我建议您使用用户在第一个视图上设置的选项来初始化这些视图。我通常在这种情况下做的事情是,当我有许多地方使用的全局参数时,我会创建一个实用程序类来保留数据,使其成为单例,然后在视图中访问共享实例viewDidLoad在初始化期间使用数据。

相关问题