单击选项卡时自动刷新视图

时间:2017-08-31 17:24:43

标签: ios objective-c

我有一个标签栏控制器,其中一个标签是我的主屏幕,另一个是设置页面。在设置页面上,用户可以编辑随后保存在NSUserDefaults中的内容,但是当它们返回到主页选项卡时,由于视图已加载,因此不会立即反映这些更改。当我返回该标签时,如何让视图完全刷新?

2 个答案:

答案 0 :(得分:0)

viewDidLoad仅在首次加载视图控制器的视图时调用 - 之后它将保留在内存中,因此通常在创建视图控制器的另一个实例之前不会再次调用它。

因此,不是在viewDidLoad()中编写您可能编写的逻辑,而是将代码写入/放入viewWillAppear()中,此视图出现时会调用此方法。因此,您的NSUserDefaults值将使用将覆盖现有值的新值进行设置。

//希望我能以某种方式帮助你,快乐编码:)

答案 1 :(得分:0)

这取决于您何时想要刷新视图。

1.如果打开视图,您是否每次都要刷新。 2.您是否只想在更改设置时刷新视图?

如果是第一个,则在viewWillAppear中编写刷新逻辑 如果是第二个,则可以在用户设置更改时添加通知。

在HomeVC中,将该通知添加为观察者并更新该观察者方法上的标签

发布通知的代码:

[[NSNotificationCenter defaultCenter] postNotificationName:@"settingsChanged" object:nil];

接收通知的代码:

在HomeVC ViewWillAppear:

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

在HomeVC上实施该方法

- (void)refreshViews:(NSNotification *)notification {
NSLog(@"Received Notification - Someone seems to have logged in");
}