我正在尝试找到正确的方法来通知 View Controller 它应该根据另一个 View Controller 的操作从服务器获取数据。
例如 - 一个呈现推文列表的 View Controller ,以及一个允许用户创建推文的 View Controller 。用户创建推文后,负责创建推文的 View Controller 将被关闭,负责呈现推文的 View Controller 现在应该知道它应该从服务器重新加载数据,以便向用户展示他刚刚创建的推文。
一开始我以为NSNotificationCenter
是可行的方法,但是经过一些研究(主要是 this twitter discussion ),我发现建议删除 viewDidDisappear
中的通知观察者 View Controller 的方法,在上述场景中,这使得通知毫无用处,因为呈现 View Controller 在应该接收通知时已经将其自身从通知的观察者中删除(因为它是被“create tweet” View Controller 隐藏,从而导致它的 viewDidDisappear
方法被调用)。
委托(delegate)在这里也是一个问题,因为可能还有其他 View Controller 也可能需要知道何时创建新推文,以便更新其 View /从服务器获取数据等。
由于所描述的流程非常流行,我认为必须有一种正确的方法来让这两个 View Controller 以有意义的方式进行通信。
有什么想法吗?
最佳答案
您可以在数据/网络模型中设置标志。
假设您有一个包含服务器请求的 TweetNetworking.swift
文件,您可以添加 var needFeedRefresh: BOOL
。
然后只需在需要时将其设置为 true
,并在刷新 Feed 后将其设置为 false
即可。
然后,您可以在 viewWillAppear
中检查该变量。
如果您需要定期刷新,另一种方法是将此变量键入为 NSDate
,并在需要强制刷新时将其设置为 NSDate(timeIntervalSince1970:0)
刷新。
关于ios - 如何让 View Controller 知道它应该从服务器获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641453/