gpt4 book ai didi

ios - 每次打开应用程序时刷新 View 和数据

转载 作者:行者123 更新时间:2023-11-28 19:48:41 25 4
gpt4 key购买 nike

我有一个 TableView 需要每次打开应用程序时刷新,但我无法做到这一点。

原因是 每天的新数据 存储在 JSON 文件中,因此应用需要刷新以查明它是否是新数据一天,以便它可以加载新数据。

我尝试将我的代码从 viewDidLoad 移动到 viewWillAppear 并认为这样可以解决问题,但事实并非如此。

有什么想法吗?

ViewController.m

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];

// Get current date, remove year from current date
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
NSString *dateToday = [formatter stringFromDate:[NSDate date]];
NSString *dateTodayShort = [dateToday substringToIndex:[dateToday length] -6];

// Get JSON file path
NSString *JSONFilePath = [[NSBundle mainBundle] pathForResource:@"Days" ofType:@"json"];
NSData *JSONData = [NSData dataWithContentsOfFile:JSONFilePath];
NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
days = JSONDictionary[@"days"];

// Iterate thru JSON to find Data for Today
NSObject *todayJson;
for (NSObject *object in days) {
NSString *dateObject = [object valueForKey:@"day"];
if ([dateObject isEqualToString:dateTodayShort]) {
todayJson = object;
NSString *textToday = [todayJson valueForKey:@"text"];
NSString *backgroundImageToday = [todayJson valueForKey:@"backgroundImage"];
textGlobal = textToday;
backgroundImageGlobal = backgroundImageToday;
}
}
// Other set up code...
}

最佳答案

我最近遇到了类似的问题,我的误解是 viewWillAppear/viewDidAppear 会在应用程序打开时调用(并显示相应的 View Controller )。事实并非如此!

如何做到这一点是通过为 NSNotification 添加一个观察者,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData) name:UIApplicationDidBecomeActiveNotification object:nil];

iOS 会在您的应用启动时发送系统 NSNotification。通知的名称保存在常量 UIApplicationDidBecomeActiveNotification 中。您可以添加保存数据的 UITableViewController(或与此相关的任何其他类)作为该通知的观察者,并在收到通知时执行更新。

关于ios - 每次打开应用程序时刷新 View 和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30486707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com