大家好,我又来请教了

2017-07-01 17:37:00 +08:00
 summer1991
  1. 我有一个社交类的 APP,有三个 Tab 页面。
  2. 第一个页面是搜索用户,第二个页面是我的关注,第三个我的粉丝。
  3. 现在我在第一个页面搜索出来一个用户,搜索出来的 cell 上有关注按钮,也可以点这个 cell 跳到这个用户的个人主页进行关注。
  4. 那么问题来了:我跳到这个用户的个人主页进行关注后返回搜索页面,怎么将搜索页面关注按钮变成已关注,并且在第二个 tab 中加入我已经关注的这个用户?
2650 次点击
所在节点    iOS
11 条回复
fengyunSmlie
2017-07-01 19:17:58 +08:00
laoyur
2017-07-01 19:41:31 +08:00
最基本的 NSNotification 就能搞定啊
LINAICAI
2017-07-01 23:33:20 +08:00
其实你的需求就是 A、B、C 三个控制器代表你三个功能页面,A 是搜索页面 PUSH 到用户个人主页点击了关注,然后 A 页面的用户搜索结果列表的关注状态改变了,同时 B 页面列表增加了一个用户而已。
这种情况最好的方法是使用通知,能一对多,实现起来代码量最少。
wohenyingyu02
2017-07-02 00:47:52 +08:00
难道不是在 viewdidappear 的时候去刷新数据么,连 notification 都不需要
a412739861
2017-07-02 00:57:22 +08:00
@wohenyingyu02 #4 viewdidappear 太浪费,相当于每次出来都刷新。而且如果是从网络获取,还得是每次都丢弃缓存。
wohenyingyu02
2017-07-02 11:37:30 +08:00
@a412739861 可以从本地获取,操作的时候直接更改缓存就行了吧?
summer1991
2017-07-03 11:26:20 +08:00
@LINAICAI 这样的话 应用内得有多少通知啊 ? 同时应用的内存数据中得存多少数据?
summer1991
2017-07-03 11:27:54 +08:00
@LINAICAI 我举的是一个场景 如果这种情况多了 代码的通知会乱飞 基本处于不可控的状态
summer1991
2017-07-03 11:29:46 +08:00
@wohenyingyu02 你说的是一种方法 解决方法 1.出来时刷新 (比较浪费网络) 2。 本地维护一个关注的人的列表 (本地处理比较复杂) 有没有简单的方法
LINAICAI
2017-07-03 12:40:00 +08:00
处理好 dealloc 中移除通知的观察者就好了,哪里会乱飞。经验告诉我这是最好的方法,你绕来绕去最终也会发现这个是最好的。
wohenyingyu02
2017-07-03 13:08:09 +08:00
@summer1991 我也有做过类似的业务逻辑,就是在另一个页面请求发出后,只有在收到服务器响应时才刷新本地缓存列表,其他页面只在显示时读缓存列表,不监听缓存变化,当然在显示时监听变化就更完善了。本地不维护缓存列表不是更复杂么,因为显示时要多线程处理网络请求,不然会阻塞界面线程。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX