ios - 如何让 View Controller 知道它应该从服务器获取数据?

标签 ios objective-c xcode swift cocoa-touch

我正在尝试找到正确的方法来通知 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/

相关文章:

ios - 相机应用程序//我需要什么代码来显示刚刚拍摄的照片?

ios - iOS 中的 Replace Segue 是什么?

objective-c - UITableViewCell 中的 UIButton 在 iOS7 中不起作用

ios - 在导航 Controller xcode 中添加 "Sub" View

xcode - 在构建qt项目时“no such sysroot directory”

ios - UIActivityViewController => LaunchServices : invalidationHandler called

ios - 在 Xcode 中使用 UINavigationController 时如何更改 UIStatusBar 的背景颜色?

ios - OpenGL 更改坐标设置

ios - AFNetworking 回调 - 委托(delegate)还是通知?

objective-c - 自动推送到其他 View Controller