Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

4年前关闭。



Improve this question




我试图找到一种正确的方法来通知视图控制器,它应该基于另一个视图控制器的操作从服务器获取数据。

例如,一个呈现tweet列表的视图控制器,以及一个允许用户创建推文的视图控制器。用户创建推文之后,负责创建推文的的视图控制器将被关闭,而负责呈现推文的的视图控制器现在应意识到它将从服务器中重新加载数据为了向用户展示他刚创建的推文。

刚开始,我以为NSNotificationCenter是可行的方法,但是在进行了一些研究(主要是this twitter discussion)之后,我发现建议在视图控制器的viewDidDisappear方法中删除通知观察器,在上述情况下,之所以使该通知无用,是因为呈现
视图控制器将在收到通知之前将其自身从通知的观察者中删除(因为它已被' create tweet'视图控制器隐藏,从而导致了viewDidDisappear方法接到电话)。

委托也是一个问题,因为可能还有其他视图控制器可能还需要知道何时创建了新的推文,以便更新其视图/从服务器中获取数据/等等。

由于上述流程非常流行,因此我认为必须有一种正确的方法,使这两个视图控制器以有意义的方式进行通信。

有任何想法吗?

最佳答案

您可以在数据/网络模型中设置标志。
假设您有一个包含服务器请求的TweetNetworking.swift文件,可以添加var needFeedRefresh: BOOL

然后,仅在需要时将其设置为true,而在刷新Feed后将其设置为false即可。
然后可以在viewWillAppear中检查该变量。

另一种方法是,如果需要定期刷新,则将此变量键入为NSDate,并在需要强制刷新时将其设置为NSDate(timeIntervalSince1970:0)

10-07 19:57
查看更多