我有一个包含三个标签的tabBarController。一个选项卡是一个设置选项卡,它有三个UISwtch,它们包含在UITableView中,它将数据存储在[NSUserDefaults standardUserDefaults]中。我正在测试用户可能做的所有事情,并发现了一个小问题。当设置选项卡在前台并退出应用程序时,输入手机的主要设置,更改我的应用程序的设置,退出设置然后重新启动我的应用程序,设置选项卡仍在前台但切换开关不反映上一步中所做的更改。如果我切换到另一个选项卡,然后返回到我的设置选项卡,现在会反映更改。
我已经尝试了所有东西,viewWillAppear,viewDidAppear,[theTtableView reloadData],什么都行不通。奇怪的是,恢复时调用完全相同的函数,并且设置选项卡位于forground中,因为当另一个选项卡位于前台时,我选择设置选项卡。即使viewDidAppear和viewWillAppear都在设置控制器上被调用,我也无法刷新它。
我知道用户可能不会进入应用内设置标签,然后退出并转到手机设置标签进行更改,然后返回应用,但这让我疯了,我需要修复此问题
我已经尝试了我在这里找到的所有建议,仍然无法使其发挥作用。
有什么想法吗?
由于
答案 0 :(得分:11)
请致电
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshViews) name:UIApplicationWillEnterForegroundNotification object:nil];
在视图控制器的初始化中(用您刷新开关的方法的选择器替换refreshViews
以反映实际值)。
不要忘记[[NSNotificationCenter defaultCenter] removeObserver:self]
中的dealloc
。
或者,您可以在viewDidLoad
或viewWillAppear
注册通知,并分别在viewDidUnload
或viewWillDisapper
注销。
答案 1 :(得分:0)
您是否尝试在UIApplicationDelegate的applicationWillResumeActive
或applicationWillEnterForeground
中添加一些刷新代码?