应用程序从多任务处理恢复后刷新视图

时间:2012-03-24 01:57:05

标签: ios uitableview uiviewcontroller uitabbarcontroller uiswitch

我有一个包含三个标签的tabBarController。一个选项卡是一个设置选项卡,它有三个UISwtch,它们包含在UITableView中,它将数据存储在[NSUserDefaults standardUserDefaults]中。我正在测试用户可能做的所有事情,并发现了一个小问题。当设置选项卡在前台并退出应用程序时,输入手机的主要设置,更改我的应用程序的设置,退出设置然后重新启动我的应用程序,设置选项卡仍在前台但切换开关不反映上一步中所做的更改。如果我切换到另一个选项卡,然后返回到我的设置选项卡,现在会反映更改。

我已经尝试了所有东西,viewWillAppear,viewDidAppear,[theTtableView reloadData],什么都行不通。奇怪的是,恢复时调用完全相同的函数,并且设置选项卡位于forground中,因为当另一个选项卡位于前台时,我选择设置选项卡。即使viewDidAppear和viewWillAppear都在设置控制器上被调用,我也无法刷新它。

我知道用户可能不会进入应用内设置标签,然后退出并转到手机设置标签进行更改,然后返回应用,但这让我疯了,我需要修复此问题

我已经尝试了我在这里找到的所有建议,仍然无法使其发挥作用。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:11)

请致电

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshViews) name:UIApplicationWillEnterForegroundNotification object:nil];

在视图控制器的初始化中(用您刷新开关的方法的选择器替换refreshViews以反映实际值)。 不要忘记[[NSNotificationCenter defaultCenter] removeObserver:self]中的dealloc

或者,您可以在viewDidLoadviewWillAppear注册通知,并分别在viewDidUnloadviewWillDisapper注销。

答案 1 :(得分:0)

您是否尝试在UIApplicationDelegate的applicationWillResumeActiveapplicationWillEnterForeground中添加一些刷新代码?