iphone - 如何确保当应用程序再次显示(从后台启动或启动)时,我的 UITableView 数据更新函数仅被调用一次?

标签 iphone ios viewdidload nsnotificationcenter

如何确保当应用程序再次显示(从后台启动或启动)时仅调用一次我的表数据函数?

也就是说,我希望在用户单击应用程序图标时刷新表数据,并且仅刷新一次。所以要求是: a) 在用户单击应用程序图标后仅调用一次 Controller 中的更新方法 b) 无论用户是否 (i) 首次启动应用程序、(ii) 从后台返回、(iii) 用户请求应用程序返回前台的任何其他方式,都有效。

我目前在实现中遇到的问题是,在应用程序从后台返回的情况下,数据更新被调用两次,所以我基本上想对此进行改进。我目前正在做的有缺陷的方法是:

- (void)updateEventData {
    // UPDATE CODE HERE
}
- (void)becomeActive:(NSNotification *)notification {
    [self updateEventData];
    [self.tableView reloadData];
}

- (void)viewDidLoad {
    [super viewDidLoad];  
    [self updateEventData];

    // Auto Refresh Data - Handle Case where App becomes active from background & you want to refresh data
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(becomeActive:)
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];

}

最佳答案

您可以通过以下方式实现它:

1) 在 NSUserDefault 中取一个变量。 2)当应用程序第一次启动时,将其值设置为FALSE。 3) 获取相应 View Controller 中 NSUserDefault 变量的值。如果值为 FALSE,则调用更新方法。 4) 现在,当应用程序变为事件状态时,将变量值设置为 TRUE。 5)在各自的 View Controller 中获取它的值。如果值为 TRUE,则不调用更新方法。 6) 所以,update方法只会被调用一次。

希望对您有帮助。可能会有一些细微的变化。

如有任何困难,请告诉我。

关于iphone - 如何确保当应用程序再次显示(从后台启动或启动)时,我的 UITableView 数据更新函数仅被调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247769/

相关文章:

iphone - 游戏中心排行榜在好友中显示 2 位玩家,在所有玩家中仅显示一位玩家

ios - 从代码启动图像 (Paintcode)

objective-c - 将 NSString 转换为 unsigned long long 的问题

ios - ViewDidLoad 中 UITextField 的圆角仅影响左角

ios - ViewController 出现两次过渡

iOS 7 TableviewCell 彩色线条

iphone - 使用 CIImage 添加纯色边框

iphone - Json在iphone中传递

ios - libc++abi.dylib : terminate_handler unexpectedly threw an exception

ios - 如何等待 UIViewController 完全初始化?